Python đọc tệp nhị phân

Đọc nhiều dữ liệu từ tệp nhị phân trong Python

Ghi chú. Các tệp nhị phân luôn được ghi ở dạng cấu trúc và sau đó nó được chuyển đổi thành luồng byte trước khi lưu trữ thành tệp nhị phân. Theo cấu trúc từ tôi muốn nói ở các định dạng như danh sách, bộ dữ liệu, bộ, từ điển, v.v.

Rất quan trọng.  Nếu chúng tôi đang đọc hồ sơ của một học sinh [số thứ tự, tên, lớp, phần, v.v. ] trong tệp nhị phân, thì tất cả chúng ta đều biết rằng chúng ta sẽ nhận được một danh sách, bộ dữ liệu, từ điển, v.v. lưu trữ các chi tiết của một sinh viên.

Để lưu trữ hồ sơ của nhiều sinh viên, chúng tôi đã sử dụng khái niệm danh sách lồng nhau trong chủ đề trước của chúng tôi. Do đó, nếu chúng ta đọc hồ sơ của tất cả sinh viên thì chúng ta sẽ nhận được đầu ra dưới dạng danh sách lồng nhau, tức là

tệp. “Abc. dữ liệu”

Chúng tôi đang lưu trữ hồ sơ của hai học sinh [số thứ tự, tên, lớp, phần, v.v. ] trong Tệp nhị phân của chúng tôi. Đây không phải là cách hoàn hảo để có được kết quả. Chúng tôi sẽ cố gắng để có được kết quả ở định dạng hoàn hảo có thể đọc được

Phương pháp giải quyết vấn đề. Chúng tôi đang lấy vòng lặp lồng nhau làm đầu ra khi chúng tôi đã lưu trữ nhiều bản ghi trong tệp nhị phân của mình. Vì vậy, ở đây, cách tiếp cận của chúng tôi là lấy từng bản ghi của học sinh để hiển thị trong mỗi dòng để dễ đọc. Chúng ta có vòng lặp lồng nhau, vì vậy ở đây chúng ta có thể sử dụng vòng lặp for cùng với phương thức load[] để hiển thị từng bản ghi.

Ví dụ 1.


Đầu ra.

Giải thích. Tôi đã chỉ cho bạn cả hai đoạn mã để đọc dữ liệu từ tệp nhị phân. Chúng ta đã định nghĩa hai hàm đầu tiên là read[] và hàm thứ hai là read2[].

Chương trình hoặc bộ xử lý nội bộ diễn giải tệp nhị phân. Nó chứa các byte như nội dung. Khi chúng ta đọc một tệp nhị phân, một đối tượng kiểu

import struct

with open["sample.bin","rb"] as f:
    data = f.read[]

unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
7 được trả về

Đọc tệp nhị phân với hàm
import struct

with open["sample.bin","rb"] as f:
    data = f.read[]

unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
8 trong Python

Trong Python, chúng ta có hàm

import struct

with open["sample.bin","rb"] as f:
    data = f.read[]

unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
8 dùng để tạo đối tượng tệp bằng cách chuyển đường dẫn của nó tới hàm và mở tệp ở một chế độ cụ thể, chế độ đọc theo mặc định. Khi chúng tôi mở tệp nhị phân, chúng tôi phải chỉ định tham số
import struct

with open["sample.bin","rb"] as f:
    data = f.read[]

unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
0 khi mở các tệp đó ở chế độ đọc, ghi hoặc nối thêm. Trong hướng dẫn này, chúng ta sẽ xử lý chế độ đọc nhị phân -
import struct

with open["sample.bin","rb"] as f:
    data = f.read[]

unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
1

Trong đoạn mã dưới đây, chúng tôi sẽ đọc tệp nhị phân và in một ký tự từ tệp

with open["sample.bin","rb"] as f:
    data = f.read[]
    
print[data[2]]

đầu ra

Nếu chúng ta in các ký tự riêng lẻ, thì chúng ta có thể xem các số nguyên

Python có một gói tên là

import struct

with open["sample.bin","rb"] as f:
    data = f.read[]

unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
2, gói này có nhiều phương thức và có thể được sử dụng để xử lý dữ liệu nhị phân được lưu trữ trong tệp, cơ sở dữ liệu và các tài nguyên khác

import struct

with open["sample.bin","rb"] as f:
    data = f.read[]

unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
0 được sử dụng để đọc dữ liệu được đóng gói theo bố cục định dạng được chỉ định. Bố cục như vậy, được sử dụng trong khi đóng gói và giải nén dữ liệu, được chỉ định bằng các ký tự định dạng. Các ký tự định dạng này, cùng với kích thước của chúng, được hiển thị bên dưới

Lưu ý rằng hàm

import struct

with open["sample.bin","rb"] as f:
    data = f.read[]

unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
0 luôn trả về một bộ

import struct

with open["sample.bin","rb"] as f:
    data = f.read[]

unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]

đầu ra

Ở đây,

import struct

with open["sample.bin","rb"] as f:
    data = f.read[]

unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
2 biểu thị short, short và long int dưới dạng bố cục định dạng dữ liệu, như chúng ta có thể thấy ở đầu ra. Đó là lý do tại sao bộ đệm để giải nén chỉ có 8 byte do kích thước của bố cục định dạng là 8[2+2+4]

Đọc tệp nhị phân với
import struct

with open["sample.bin","rb"] as f:
    data = f.read[]

unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
3 bằng Python

Chúng ta cũng có thể sử dụng phương thức

import struct

with open["sample.bin","rb"] as f:
    data = f.read[]

unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
4 từ lớp
import struct

with open["sample.bin","rb"] as f:
    data = f.read[]

unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
5 trong thư viện
import struct

with open["sample.bin","rb"] as f:
    data = f.read[]

unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
6 để đọc tệp ở chế độ byte và sau đó diễn giải dữ liệu bằng cách sử dụng hàm
import struct

with open["sample.bin","rb"] as f:
    data = f.read[]

unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
0 như đã trình bày trước đó

import struct

with open["sample.bin","rb"] as f:
    data = f.read[]

unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
0

đầu ra

Đọc tệp nhị phân với hàm
import struct

with open["sample.bin","rb"] as f:
    data = f.read[]

unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
8 trong Python

Một cách tiếp cận thú vị khác được cung cấp trong mô-đun

import struct

with open["sample.bin","rb"] as f:
    data = f.read[]

unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
9. Sử dụng hàm
import struct

with open["sample.bin","rb"] as f:
    data = f.read[]

unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
00 trong mô-đun này, chúng ta có thể đọc dữ liệu nhị phân từ các tệp sau khi chỉ định dữ liệu định dạng bằng hàm
import struct

with open["sample.bin","rb"] as f:
    data = f.read[]

unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
01. Đây được coi là một phương pháp nhanh chóng. Đoạn mã sau đây cho thấy làm thế nào để thực hiện điều này

import struct

with open["sample.bin","rb"] as f:
    data = f.read[]

unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
5

đầu ra

Ở đây chúng tôi chỉ định loại định dạng là số nguyên-32 bit và trích xuất dữ liệu bằng hàm

import struct

with open["sample.bin","rb"] as f:
    data = f.read[]

unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
00

Làm cách nào để trích xuất dữ liệu từ tệp nhị phân Python?

# Mở trình xử lý tệp để tạo tệp nhị phân. file=open["số_danh_sách. bin","wb"] # Khai báo danh sách các giá trị số. .
# Mở tệp nhị phân để đọc. tệp = mở ["số_danh sách. bin", "rb"] # Đọc năm số đầu tiên vào một danh sách. .
# Nhập mô-đun NumPy. nhập numpy dưới dạng np. # Khai báo mảng numpy

Làm cách nào để đọc chuỗi nhị phân trong Python?

Phương pháp #1. Dữ liệu nhị phân được chia thành các bộ 7 bit vì bộ nhị phân này làm đầu vào, trả về giá trị thập phân tương ứng là mã ASCII của ký tự của một chuỗi. Mã ASCII này sau đó được chuyển đổi thành chuỗi bằng hàm chr[] .

Làm cách nào để đọc tệp CSV nhị phân bằng Python?

Để đọc tệp nhị phân, hãy sử dụng hàm open['rb'] trong trình quản lý ngữ cảnh [ có từ khóa] và đọc nội dung của nó thành một biến chuỗi bằng f. readlines[] . Sau đó, bạn có thể chuyển đổi chuỗi thành CSV bằng nhiều cách tiếp cận khác nhau, chẳng hạn như mô-đun csv.

Bạn có thể đọc các tệp nhị phân không?

Tệp nhị phân không phải con người có thể đọc được và yêu cầu chương trình hoặc bộ xử lý phần cứng đặc biệt biết cách đọc dữ liệu bên trong tệp. Chỉ sau đó, các hướng dẫn được mã hóa trong nội dung nhị phân mới có thể được hiểu và xử lý đúng cách.

Chủ Đề