Đọ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
import struct
with open["sample.bin","rb"] as f:
data = f.read[]
unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
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]
1Trong đ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ácimport 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ướiLư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
import struct
with open["sample.bin","rb"] as f:
data = f.read[]
unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
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
import struct
with open["sample.bin","rb"] as f:
data = f.read[]
unpack_result = struct.unpack['hhl', data[0:8]]
print[unpack_result]
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àyimport 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