Cách đọc tệp nhị phân bằng Python

How Read Binary Files Python



Tệp chứa dữ liệu nhị phân được gọi là tệp nhị phân. Mọi dữ liệu nhị phân đã được định dạng hoặc chưa được định dạng đều được lưu trữ trong một tệp nhị phân và tệp này không thể đọc được bởi con người và được sử dụng trực tiếp bởi máy tính. Khi cần có tệp nhị phân để đọc hoặc chuyển từ vị trí này sang vị trí khác, nội dung của tệp sẽ được chuyển đổi hoặc mã hóa thành định dạng con người có thể đọc được. Phần mở rộng của tệp nhị phân là .bin. Nội dung của tệp nhị phân có thể được đọc bằng cách sử dụng một chức năng hoặc mô-đun tích hợp sẵn. Các cách khác nhau để đọc tệp nhị phân bằng Python đã được trình bày trong hướng dẫn này.

Điều kiện tiên quyết:

Trước khi kiểm tra các ví dụ của hướng dẫn này, tốt hơn nên tạo một hoặc nhiều tệp nhị phân để sử dụng trong tập lệnh ví dụ. Tập lệnh của hai tệp python đã được cung cấp bên dưới để tạo hai tệp nhị phân. Binary1.py sẽ tạo một tệp nhị phân có tên string.bin sẽ chứa dữ liệu chuỗi và binary2.py sẽ tạo một tệp nhị phân có tên number_list.bin sẽ chứa một danh sách dữ liệu số.







Binary1.py

# Mở trình xử lý tệp để tạo tệp nhị phân

file_handler= mở ra('string.bin', 'wb')

# Thêm hai dòng văn bản trong tệp nhị phân

file_handler.viết(NS'Chào mừng bạn đến với LinuxHint. Học lập trình Python. ')

# Đóng trình xử lý tệp

file_handler.gần()

Binary2.py

# Mở trình xử lý tệp để tạo tệp nhị phân

tập tin=mở ra('number_list.bin','wb')

# Khai báo danh sách các giá trị số

con số=[10,30,Bốn năm,60,70,85,99]

# Chuyển danh sách thành mảng

barray=bytearray(con số)

# Ghi mảng vào tệp

tập tin.viết(barray)

tập tin.gần()

Ví dụ-1: Đọc tệp nhị phân của dữ liệu chuỗi vào mảng byte

Nhiều cách tồn tại trong Python để đọc tệp nhị phân. Bạn có thể đọc số byte cụ thể hoặc toàn bộ nội dung của tệp nhị phân tại một thời điểm. Tạo tệp python bằng tập lệnh sau. Các hàm open () đã sử dụng để mở string.bin để đọc. Các hàm read () đã được sử dụng để đọc 7 ký tự từ tệp trong mỗi lần lặp lại của vòng lặp while và in. Tiếp theo, hàm read () đã được sử dụng mà không có bất kỳ đối số nào để đọc toàn bộ nội dung của tệp nhị phân sẽ được in sau này.



# Mở tệp nhị phân để đọc

file_handler= mở ra('string.bin', 'rb')

# Đọc ba byte đầu tiên từ tệp nhị phân

data_byte=file_handler.đọc(7)

in('In ba ký tự trong mỗi lần lặp:')

# Lặp lại vòng lặp để đọc phần còn lại của tệp

trong khidata_byte:

in(data_byte)

data_byte=file_handler.đọc(7)


# Đọc toàn bộ tệp dưới dạng một chuỗi byte đơn

với mở ra('string.bin', 'rb') nhưfh:

Nội dung=fh.đọc()

in('In toàn bộ nội dung của tệp nhị phân:')

in(Nội dung)

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi thực hiện tập lệnh trên.







Ví dụ-2: Đọc tệp nhị phân của dữ liệu chuỗi vào mảng

Tạo tệp python bằng tập lệnh sau để đọc tệp nhị phân có tên number_list.bin đã tạo trước đó. Tệp nhị phân này chứa một danh sách dữ liệu số. Giống như ví dụ trước, hàm open () đã sử dụng mở tệp nhị phân để đọc trong tập lệnh. Tiếp theo, 5 số đầu tiên sẽ được đọc từ tệp nhị phân và chuyển thành danh sách trước khi in.

# Mở tệp nhị phân để đọc

tập tin = mở ra('number_list.bin', 'rb')

# Đọc năm số đầu tiên thành một danh sách

con số= danh sách(tập tin.đọc(5))

# In danh sách

in(con số)

# Đóng tệp

tập tin.gần()

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi thực hiện tập lệnh trên. Tệp nhị phân chứa 7 số và năm số đầu tiên đã được in trong đầu ra.



Ví dụ-3: Đọc tệp nhị phân bằng NumPy

Các cách tạo tệp nhị phân bằng cách sử dụng Mảng NumPy và đọc nội dung của tệp nhị phân bằng cách sử dụng thành một danh sách bằng cách sử dụng Mô-đun NumPy đã được hiển thị trong phần này của hướng dẫn. Trước khi kiểm tra tập lệnh được cung cấp bên dưới, bạn phải cài đặt Mô-đun NumPy bằng cách thực hiện lệnh từ thiết bị đầu cuối hoặc cài đặt Gói NumPy trong trình soạn thảo Python, nơi tập lệnh sẽ được thực thi. Các hàm tofile () được sử dụng để tạo tệp văn bản hoặc tệp nhị phân và hàm fromfile () được sử dụng để tạo một mảng bằng cách đọc một tệp văn bản hoặc tệp nhị phân.

Cú pháp của tofile ():

ndarray.nộp(tập tin,Tháng chín='',định dạng='%NS')

Đối số đầu tiên là bắt buộc và lấy tên tệp hoặc chuỗi hoặc đường dẫn làm giá trị. Tệp sẽ được tạo nếu tên tệp được cung cấp trong đối số này. Đối số thứ hai là tùy chọn được sử dụng để phân tách các phần tử mảng. Đối số thứ ba cũng là tùy chọn và được sử dụng để định dạng đầu ra của tệp văn bản.

Cú pháp của fomfile ():

numpy.fromfile(tập tin,dtype=trôi nổi,đếm=-1,Tháng chín='',bù lại=0,*,như=Không có)

Đối số đầu tiên là bắt buộc và lấy tên tệp hoặc chuỗi hoặc đường dẫn làm giá trị. Nội dung của tệp sẽ được đọc nếu tên tệp được cung cấp trong đối số này. Các dtype xác định kiểu dữ liệu của mảng được trả về. Số đếm được sử dụng để đếm số lượng các mục. Mục đích của Tháng chín là để tách các mục văn bản hoặc mảng. Phần bù được sử dụng để xác định vị trí hiện tại của tệp. Đối số cuối cùng được sử dụng để tạo một đối tượng mảng không phải là Mảng NumPy .

Tạo tệp python bằng tập lệnh sau để tạo tệp nhị phân bằng cách sử dụng Mảng NumPy và đọc và in nội dung của tệp nhị phân.

# Nhập mô-đun NumPy

nhập khẩunumpynhưví dụ

# Khai báo mảng numpy

nparray=ví dụ.mảng([3. 4, 89, 30, Bốn năm, 90, mười một])

# Tạo tệp nhị phân từ mảng numpy

nparray.nộp('list.bin')

# In dữ liệu từ tệp nhị phân

in(ví dụ.fromfile('list.bin',dtype=ví dụ.int64))

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi thực hiện tập lệnh trên.

Phần kết luận:

Ba cách khác nhau để đọc tệp nhị phân đã được chỉ ra trong hướng dẫn này bằng cách sử dụng các ví dụ đơn giản. Ví dụ đầu tiên trả về nội dung của tệp nhị phân dưới dạng một mảng byte. Ví dụ thứ hai trả về nội dung của tệp nhị phân dưới dạng danh sách. Ví dụ cuối cùng cũng trả về nội dung của tệp nhị phân dưới dạng danh sách.