Cách đọc tệp nhị phân trong Python

Để đọc hoặc ghi tệp nhị phân, trước tiên, bạn cần hiểu các chế độ tệp khác nhau cho Tệp nhị phân trong Python −

ModeDescriptionrbMở một tệp chỉ để đọc ở định dạng nhị phân. Con trỏ tệp được đặt ở đầu tệp. Đây là chế độ mặc định. rb+Mở tệp cho cả đọc và ghi ở định dạng nhị phân. Con trỏ tệp đặt ở đầu tệp. wbMở một tệp chỉ để ghi ở định dạng nhị phân. Ghi đè tệp nếu tệp tồn tại. Nếu tệp không tồn tại, hãy tạo một tệp mới để ghi. wb+Mở tệp cho cả ghi và đọc ở định dạng nhị phân. Ghi đè lên tệp hiện có nếu tệp tồn tại. Nếu tệp không tồn tại, hãy tạo một tệp mới để đọc và ghi. abMở tệp để nối thêm ở định dạng nhị phân. Con trỏ tệp ở cuối tệp nếu tệp tồn tại. Tức là tệp đang ở chế độ chắp thêm. Nếu tệp không tồn tại, nó sẽ tạo một tệp mới để ghi. ab+Mở tệp cho cả việc nối thêm và đọc ở định dạng nhị phân. Con trỏ tệp ở cuối tệp nếu tệp tồn tại. Tệp mở ở chế độ chắp thêm. Nếu tệp không tồn tại, nó sẽ tạo một tệp mới để đọc và ghi

Đọc một tập tin nhị phân

Giả sử chúng ta có một tệp nhị phân. Chúng ta có thể đọc nó bằng phương thức read[]. Đầu tiên, chúng ta sẽ mở Tệp nhị phân bằng chế độ rb của phương thức open[]. Chúng tôi có tệp nguồn sau trong D. ổ đĩa -

Ví dụ

Hãy xem mã hoàn chỉnh

đầu ra

Tệp nhị phân không thể đọc được và nội dung không thể nhận dạng được. Sản lượng thực tế lớn hơn. Chúng tôi chỉ hiển thị một số phần bên dưới

Tệp nhị phân là tệp không phải là tệp văn bản bình thường. Ví dụ. Một tập tin hình ảnh. Các tệp này cũng được lưu trữ dưới dạng một chuỗi byte trong đĩa cứng máy tính. Các loại tệp nhị phân này không thể được mở ở chế độ bình thường và đọc dưới dạng văn bản

Bạn có thể đọc tệp nhị phân bằng cách mở tệp ở chế độ nhị phân bằng cách sử dụng

try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:
        byte = f.read[1]
        while byte:
            # Do stuff with byte.
            byte = f.read[1]
            print[byte]
except IOError:
     print['Error While Opening the file!']  
9

Khi làm việc với các vấn đề như phân loại hình ảnh trong Machine learning, bạn có thể cần mở tệp ở chế độ nhị phân và đọc byte để tạo mô hình ML. Trong tình huống này, bạn có thể mở tệp ở chế độ nhị phân và đọc tệp dưới dạng byte. Trong trường hợp này, việc giải mã byte thành các ký tự liên quan sẽ không được thực hiện. Mặt khác, khi bạn mở một tệp bình thường ở chế độ đọc thông thường, các byte sẽ được giải mã thành chuỗi hoặc các ký tự liên quan khác dựa trên mã hóa tệp

Nếu bạn vội vàng

Bạn có thể mở tệp bằng phương thức

    b'\xd8'
    b'\xff'
    b'\xe0'
    b'\x00'
    b'\x10'
    b'J'
    b'F'
    b'I'
    b'F'
    b'\x00'
    b'\x01'
    b'\x01'
    b'\x00'
    b'\x00'
    b'\x01'
    b'\x00'
    b'\x01'
    b'\x00'
    b'\x00'
    b'\xff'
    b'\xed'
    b'\x00'
    b'|'
    b'P'
    b'h'
    b'o'
    b't'
    b'o'
    b's'
    b'h'
    b'o'
    b'p'
    b' '
    b'3'
    b'.'
    b'0'
    b'\xc6'
    b'\xb3'
    b'\xff'
    b'\xd9'
    b''
0 bằng cách chuyển tham số
    b'\xd8'
    b'\xff'
    b'\xe0'
    b'\x00'
    b'\x10'
    b'J'
    b'F'
    b'I'
    b'F'
    b'\x00'
    b'\x01'
    b'\x01'
    b'\x00'
    b'\x00'
    b'\x01'
    b'\x00'
    b'\x01'
    b'\x00'
    b'\x00'
    b'\xff'
    b'\xed'
    b'\x00'
    b'|'
    b'P'
    b'h'
    b'o'
    b't'
    b'o'
    b's'
    b'h'
    b'o'
    b'p'
    b' '
    b'3'
    b'.'
    b'0'
    b'\xc6'
    b'\xb3'
    b'\xff'
    b'\xd9'
    b''
1 để mở tệp ở chế độ nhị phân và đọc byte của tệp

    b'\xd8'
    b'\xff'
    b'\xe0'
    b'\x00'
    b'\x10'
    b'J'
    b'F'
    b'I'
    b'F'
    b'\x00'
    b'\x01'
    b'\x01'
    b'\x00'
    b'\x00'
    b'\x01'
    b'\x00'
    b'\x01'
    b'\x00'
    b'\x00'
    b'\xff'
    b'\xed'
    b'\x00'
    b'|'
    b'P'
    b'h'
    b'o'
    b't'
    b'o'
    b's'
    b'h'
    b'o'
    b'p'
    b' '
    b'3'
    b'.'
    b'0'
    b'\xc6'
    b'\xb3'
    b'\xff'
    b'\xd9'
    b''
2 mở tệp nhị phân ở chế độ đọc

    b'\xd8'
    b'\xff'
    b'\xe0'
    b'\x00'
    b'\x10'
    b'J'
    b'F'
    b'I'
    b'F'
    b'\x00'
    b'\x01'
    b'\x01'
    b'\x00'
    b'\x00'
    b'\x01'
    b'\x00'
    b'\x01'
    b'\x00'
    b'\x00'
    b'\xff'
    b'\xed'
    b'\x00'
    b'|'
    b'P'
    b'h'
    b'o'
    b't'
    b'o'
    b's'
    b'h'
    b'o'
    b'p'
    b' '
    b'3'
    b'.'
    b'0'
    b'\xc6'
    b'\xb3'
    b'\xff'
    b'\xd9'
    b''
3– Để chỉ định mở tệp ở chế độ đọc
b – Để chỉ định đó là tệp nhị phân. Sẽ không có nỗ lực giải mã byte thành chuỗi nào

Ví dụ

Ví dụ dưới đây đọc tệp một byte tại một thời điểm và in byte

try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:
        byte = f.read[1]
        while byte:
            # Do stuff with byte.
            byte = f.read[1]
            print[byte]
except IOError:
     print['Error While Opening the file!']  

Nếu bạn muốn hiểu chi tiết, hãy đọc tiếp…

Trong hướng dẫn này, bạn sẽ học cách đọc tệp nhị phân theo nhiều cách khác nhau

Mục lục

Đọc tệp nhị phân theo từng byte

Trong phần này, bạn sẽ học cách đọc từng byte tệp nhị phân và in nó. Đây là một trong những cách nhanh nhất để đọc tệp nhị phân

Tệp được mở bằng phương pháp

    b'\xd8'
    b'\xff'
    b'\xe0'
    b'\x00'
    b'\x10'
    b'J'
    b'F'
    b'I'
    b'F'
    b'\x00'
    b'\x01'
    b'\x01'
    b'\x00'
    b'\x00'
    b'\x01'
    b'\x00'
    b'\x01'
    b'\x00'
    b'\x00'
    b'\xff'
    b'\xed'
    b'\x00'
    b'|'
    b'P'
    b'h'
    b'o'
    b't'
    b'o'
    b's'
    b'h'
    b'o'
    b'p'
    b' '
    b'3'
    b'.'
    b'0'
    b'\xc6'
    b'\xb3'
    b'\xff'
    b'\xd9'
    b''
0 và chế độ được đề cập là “rb” có nghĩa là mở tệp ở chế độ đọc và biểu thị đó là tệp nhị phân. Trong trường hợp này, việc giải mã byte thành chuỗi sẽ không được thực hiện. Nó sẽ chỉ được đọc dưới dạng byte

Ví dụ dưới đây cho thấy cách tệp được đọc từng byte bằng cách sử dụng phương thức

    b'\xd8'
    b'\xff'
    b'\xe0'
    b'\x00'
    b'\x10'
    b'J'
    b'F'
    b'I'
    b'F'
    b'\x00'
    b'\x01'
    b'\x01'
    b'\x00'
    b'\x00'
    b'\x01'
    b'\x00'
    b'\x01'
    b'\x00'
    b'\x00'
    b'\xff'
    b'\xed'
    b'\x00'
    b'|'
    b'P'
    b'h'
    b'o'
    b't'
    b'o'
    b's'
    b'h'
    b'o'
    b'p'
    b' '
    b'3'
    b'.'
    b'0'
    b'\xc6'
    b'\xb3'
    b'\xff'
    b'\xd9'
    b''
5

Giá trị tham số 1 đảm bảo một byte được đọc trong mỗi lần gọi phương thức

    b'\xd8'
    b'\xff'
    b'\xe0'
    b'\x00'
    b'\x10'
    b'J'
    b'F'
    b'I'
    b'F'
    b'\x00'
    b'\x01'
    b'\x01'
    b'\x00'
    b'\x00'
    b'\x01'
    b'\x00'
    b'\x01'
    b'\x00'
    b'\x00'
    b'\xff'
    b'\xed'
    b'\x00'
    b'|'
    b'P'
    b'h'
    b'o'
    b't'
    b'o'
    b's'
    b'h'
    b'o'
    b'p'
    b' '
    b'3'
    b'.'
    b'0'
    b'\xc6'
    b'\xb3'
    b'\xff'
    b'\xd9'
    b''
6

Ví dụ

try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:
        byte = f.read[1]
        while byte:
            # Do stuff with byte.
            byte = f.read[1]
            print[byte]
except IOError:
     print['Error While Opening the file!']  

đầu ra

    b'\xd8'
    b'\xff'
    b'\xe0'
    b'\x00'
    b'\x10'
    b'J'
    b'F'
    b'I'
    b'F'
    b'\x00'
    b'\x01'
    b'\x01'
    b'\x00'
    b'\x00'
    b'\x01'
    b'\x00'
    b'\x01'
    b'\x00'
    b'\x00'
    b'\xff'
    b'\xed'
    b'\x00'
    b'|'
    b'P'
    b'h'
    b'o'
    b't'
    b'o'
    b's'
    b'h'
    b'o'
    b'p'
    b' '
    b'3'
    b'.'
    b'0'
    b'\xc6'
    b'\xb3'
    b'\xff'
    b'\xd9'
    b''

Python đọc tệp nhị phân thành mảng byte

Trong phần này, bạn sẽ học cách đọc các tệp nhị phân thành một mảng byte

Đầu tiên, tệp được mở ở chế độ “

    b'\xd8'
    b'\xff'
    b'\xe0'
    b'\x00'
    b'\x10'
    b'J'
    b'F'
    b'I'
    b'F'
    b'\x00'
    b'\x01'
    b'\x01'
    b'\x00'
    b'\x00'
    b'\x01'
    b'\x00'
    b'\x01'
    b'\x00'
    b'\x00'
    b'\xff'
    b'\xed'
    b'\x00'
    b'|'
    b'P'
    b'h'
    b'o'
    b't'
    b'o'
    b's'
    b'h'
    b'o'
    b'p'
    b' '
    b'3'
    b'.'
    b'0'
    b'\xc6'
    b'\xb3'
    b'\xff'
    b'\xd9'
    b''
7“

Một mảng byte có tên là

    b'\xd8'
    b'\xff'
    b'\xe0'
    b'\x00'
    b'\x10'
    b'J'
    b'F'
    b'I'
    b'F'
    b'\x00'
    b'\x01'
    b'\x01'
    b'\x00'
    b'\x00'
    b'\x01'
    b'\x00'
    b'\x01'
    b'\x00'
    b'\x00'
    b'\xff'
    b'\xed'
    b'\x00'
    b'|'
    b'P'
    b'h'
    b'o'
    b't'
    b'o'
    b's'
    b'h'
    b'o'
    b'p'
    b' '
    b'3'
    b'.'
    b'0'
    b'\xc6'
    b'\xb3'
    b'\xff'
    b'\xd9'
    b''
8 được khởi tạo bằng phương thức
    b'\xd8'
    b'\xff'
    b'\xe0'
    b'\x00'
    b'\x10'
    b'J'
    b'F'
    b'I'
    b'F'
    b'\x00'
    b'\x01'
    b'\x01'
    b'\x00'
    b'\x00'
    b'\x01'
    b'\x00'
    b'\x01'
    b'\x00'
    b'\x00'
    b'\xff'
    b'\xed'
    b'\x00'
    b'|'
    b'P'
    b'h'
    b'o'
    b't'
    b'o'
    b's'
    b'h'
    b'o'
    b'p'
    b' '
    b'3'
    b'.'
    b'0'
    b'\xc6'
    b'\xb3'
    b'\xff'
    b'\xd9'
    b''
9

Sau đó, tệp được đọc từng byte một bằng cách sử dụng

try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:

        mybytearray = bytearray[]

        # Do stuff with byte.
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]

        print[mybytearray]

except IOError:
    print['Error While Opening the file!']    
0 và nối vào mảng byte bằng cách sử dụng toán tử
try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:

        mybytearray = bytearray[]

        # Do stuff with byte.
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]

        print[mybytearray]

except IOError:
    print['Error While Opening the file!']    
1. Mỗi byte được thêm vào
try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:

        mybytearray = bytearray[]

        # Do stuff with byte.
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]

        print[mybytearray]

except IOError:
    print['Error While Opening the file!']    
2

Cuối cùng, bạn có thể in

try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:

        mybytearray = bytearray[]

        # Do stuff with byte.
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]

        print[mybytearray]

except IOError:
    print['Error While Opening the file!']    
2 để hiển thị các byte được đọc

Ví dụ

try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:

        mybytearray = bytearray[]

        # Do stuff with byte.
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]

        print[mybytearray]

except IOError:
    print['Error While Opening the file!']    

đầu ra

    bytearray[b'\xff\xd8\xff\xe0\x00\x10']

Python đọc tệp nhị phân thành mảng có nhiều mảng

Trong phần này, bạn sẽ học cách đọc tệp nhị phân thành một mảng NumPy

Đầu tiên,

try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:

        mybytearray = bytearray[]

        # Do stuff with byte.
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]

        print[mybytearray]

except IOError:
    print['Error While Opening the file!']    
4 để nhập thư viện
try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:

        mybytearray = bytearray[]

        # Do stuff with byte.
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]

        print[mybytearray]

except IOError:
    print['Error While Opening the file!']    
5

Sau đó chỉ định kiểu dữ liệu là

try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:

        mybytearray = bytearray[]

        # Do stuff with byte.
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]

        print[mybytearray]

except IOError:
    print['Error While Opening the file!']    
6 cho đối tượng
try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:

        mybytearray = bytearray[]

        # Do stuff with byte.
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]

        print[mybytearray]

except IOError:
    print['Error While Opening the file!']    
7 bằng cách sử dụng
try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:

        mybytearray = bytearray[]

        # Do stuff with byte.
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]

        print[mybytearray]

except IOError:
    print['Error While Opening the file!']    
8

Tiếp theo, mở tệp nhị phân ở chế độ đọc

Bây giờ, hãy tạo mảng NumPy bằng phương thức

try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:

        mybytearray = bytearray[]

        # Do stuff with byte.
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]

        print[mybytearray]

except IOError:
    print['Error While Opening the file!']    
9 bằng cách sử dụng đối tượng
try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:

        mybytearray = bytearray[]

        # Do stuff with byte.
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]

        print[mybytearray]

except IOError:
    print['Error While Opening the file!']    
7

Tham số là đối tượng tệp và kiểu dữ liệu được khởi tạo dưới dạng byte. Điều này sẽ tạo ra một mảng byte NumPy

    bytearray[b'\xff\xd8\xff\xe0\x00\x10']
1

Ví dụ

import numpy as np

dtype = np.dtype['B']
try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:
        numpy_data = np.fromfile[f,dtype]
    print[numpy_data]
except IOError:
    print['Error While Opening the file!']    

đầu ra

[255 216 255 .. 179 255 217]


Các byte được đọc vào mảng

try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:

        mybytearray = bytearray[]

        # Do stuff with byte.
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]
        mybytearray+=f.read[1]

        print[mybytearray]

except IOError:
    print['Error While Opening the file!']    
5 và các byte được in ra

Đọc tệp nhị phân từng dòng

Trong phần này, bạn sẽ học cách đọc tệp nhị phân theo từng dòng

Bạn có thể đọc từng dòng tệp bằng cách sử dụng phương pháp

    bytearray[b'\xff\xd8\xff\xe0\x00\x10']
3 có sẵn trong đối tượng tệp

Mỗi dòng sẽ được lưu trữ dưới dạng một mục trong danh sách. Danh sách này có thể được lặp lại để truy cập từng dòng của tệp

Phương pháp

    bytearray[b'\xff\xd8\xff\xe0\x00\x10']
4 được sử dụng để xóa khoảng trắng ở đầu và cuối dòng trong khi in dòng

Ví dụ

f = open["c:\temp\Binary_File.jpg",'rb']

lines = f.readlines[]

for line in lines:

    print[line.rstrip[]]

đầu ra

    b'\x07\x07\x07\x07'
    b''
    b''
    b''
    b''
    b''
    b'\x0c\x0f\x0c\x0c\x0c\x0c\x0c\x0c\x0f\x0f\x0f\x0f\x0f\x0f\x0f\x0f\x12\x12\x12\x12\x12\x12\x15\x15\x15\x15\x15\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\xff\xdb\x00C\x01\x04\x04\x04\x06\x06\x06'
    b'\x06\x06'

Đọc tệp nhị phân đầy đủ trong một lần

Trong phần này, bạn sẽ học cách đọc tệp nhị phân trong một lần chụp

Bạn có thể làm điều này bằng cách chuyển

    bytearray[b'\xff\xd8\xff\xe0\x00\x10']
5 cho phương thức
    bytearray[b'\xff\xd8\xff\xe0\x00\x10']
6. Thao tác này sẽ đọc toàn bộ tệp nhị phân trong một lần chụp như hình bên dưới

Ví dụ

try:
    f = open["c:\temp\Binary_File.jpg", 'rb']
    while True:
        binarycontent = f.read[-1]  
        if not binarycontent:
            break
        print[binarycontent]
except IOError:
    print['Error While Opening the file!']

đầu ra

try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:
        byte = f.read[1]
        while byte:
            # Do stuff with byte.
            byte = f.read[1]
            print[byte]
except IOError:
     print['Error While Opening the file!']  
0

Python đọc tệp nhị phân và chuyển đổi sang Ascii

Trong phần này, bạn sẽ học cách đọc tệp nhị phân và chuyển đổi sang ASCII bằng thư viện binascii. Điều này sẽ chuyển đổi tất cả các byte thành ký tự ASCII

Đọc tệp dưới dạng nhị phân như đã giải thích trong phần trước

Tiếp theo, sử dụng phương pháp

    bytearray[b'\xff\xd8\xff\xe0\x00\x10']
7. Điều này sẽ chuyển đổi các byte thành
    bytearray[b'\xff\xd8\xff\xe0\x00\x10']
8 và trả về giá trị
    bytearray[b'\xff\xd8\xff\xe0\x00\x10']
8

Sau đó, bạn có thể in cái này để kiểm tra

    bytearray[b'\xff\xd8\xff\xe0\x00\x10']
8 ký tự

Ví dụ

try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:
        byte = f.read[1]
        while byte:
            # Do stuff with byte.
            byte = f.read[1]
            print[byte]
except IOError:
     print['Error While Opening the file!']  
1

đầu ra

try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:
        byte = f.read[1]
        while byte:
            # Do stuff with byte.
            byte = f.read[1]
            print[byte]
except IOError:
     print['Error While Opening the file!']  
2

Đọc tệp nhị phân vào khung dữ liệu

Trong phần này, bạn sẽ học cách đọc tệp nhị phân vào pandas dataframe

Trước tiên, bạn cần đọc tệp nhị phân thành một

import numpy as np

dtype = np.dtype['B']
try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:
        numpy_data = np.fromfile[f,dtype]
    print[numpy_data]
except IOError:
    print['Error While Opening the file!']    
1. Bởi vì không có phương pháp nào để đọc trực tiếp tệp nhị phân tới
import numpy as np

dtype = np.dtype['B']
try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:
        numpy_data = np.fromfile[f,dtype]
    print[numpy_data]
except IOError:
    print['Error While Opening the file!']    
2

Sau khi bạn có

import numpy as np

dtype = np.dtype['B']
try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:
        numpy_data = np.fromfile[f,dtype]
    print[numpy_data]
except IOError:
    print['Error While Opening the file!']    
1, thì bạn có thể tạo một khung dữ liệu với
import numpy as np

dtype = np.dtype['B']
try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:
        numpy_data = np.fromfile[f,dtype]
    print[numpy_data]
except IOError:
    print['Error While Opening the file!']    
1

Truyền dữ liệu mảng NumPy vào

import numpy as np

dtype = np.dtype['B']
try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:
        numpy_data = np.fromfile[f,dtype]
    print[numpy_data]
except IOError:
    print['Error While Opening the file!']    
5. Sau đó, bạn sẽ có khung dữ liệu với các byte được đọc từ tệp nhị phân

Ví dụ

try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:
        byte = f.read[1]
        while byte:
            # Do stuff with byte.
            byte = f.read[1]
            print[byte]
except IOError:
     print['Error While Opening the file!']  
3

đầu ra

try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:
        byte = f.read[1]
        while byte:
            # Do stuff with byte.
            byte = f.read[1]
            print[byte]
except IOError:
     print['Error While Opening the file!']  
4

Đây là cách bạn có thể đọc tệp nhị phân bằng NumPy và sử dụng mảng NumPy đó để tạo khung dữ liệu gấu trúc

Với mảng NumPy, bạn cũng có thể đọc các byte vào từ điển

Đọc tiêu đề bỏ qua tệp nhị phân

Trong phần này, bạn sẽ học cách đọc tệp nhị phân, bỏ qua dòng tiêu đề trong tệp nhị phân. Một số tệp nhị phân sẽ có tiêu đề ASCII trong đó

Phương thức bỏ qua tiêu đề này có thể hữu ích khi đọc các tệp nhị phân có tiêu đề ASCII

Bạn có thể sử dụng phương thức

    bytearray[b'\xff\xd8\xff\xe0\x00\x10']
3 có sẵn trong đối tượng Tệp và chỉ định [1. ] như một tham số bổ sung. Điều này có nghĩa là dòng từ chỉ mục 1 sẽ được đọc

Dòng tiêu đề ASCII 0 sẽ bị bỏ qua

Ví dụ

try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:
        byte = f.read[1]
        while byte:
            # Do stuff with byte.
            byte = f.read[1]
            print[byte]
except IOError:
     print['Error While Opening the file!']  
5

đầu ra

try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:
        byte = f.read[1]
        while byte:
            # Do stuff with byte.
            byte = f.read[1]
            print[byte]
except IOError:
     print['Error While Opening the file!']  
6

Đọc tệp nhị phân bằng Pickle

Trong phần này, bạn sẽ học cách đọc các tệp nhị phân trong python bằng Pickle

Điều này thực sự phức tạp vì không thể đọc được tất cả các loại tệp nhị phân trong chế độ này. Bạn có thể gặp sự cố khi chọn tệp nhị phân. Vì lỗi khóa tải không hợp lệ có thể xảy ra

Do đó không nên sử dụng phương pháp này

Ví dụ

try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:
        byte = f.read[1]
        while byte:
            # Do stuff with byte.
            byte = f.read[1]
            print[byte]
except IOError:
     print['Error While Opening the file!']  
7

đầu ra

try:
    with open["c:\temp\Binary_File.jpg", "rb"] as f:
        byte = f.read[1]
        while byte:
            # Do stuff with byte.
            byte = f.read[1]
            print[byte]
except IOError:
     print['Error While Opening the file!']  
8

Phần kết luận

Đọc tệp nhị phân là một chức năng quan trọng. Ví dụ: đọc byte của tệp hình ảnh rất hữu ích khi bạn đang làm việc với các vấn đề phân loại hình ảnh. Trong trường hợp này, bạn có thể đọc tệp hình ảnh dưới dạng nhị phân và đọc các byte để tạo mô hình

Trong hướng dẫn này, bạn đã học các phương pháp khác nhau có sẵn để đọc các tệp nhị phân trong python và các thư viện khác nhau có sẵn trong đó

Làm cách nào tôi có thể đọc tệp nhị phân?

Để đọc từ tệp nhị phân .
Sử dụng phương thức ReadAllBytes, trả về nội dung của tệp dưới dạng mảng byte. Ví dụ này đọc từ tệp C. /Documents and Settings/selfportrait. .
Đối với các tệp nhị phân lớn, bạn có thể sử dụng phương thức Đọc của đối tượng FileStream để chỉ đọc từ tệp một lượng được chỉ định tại một thời điểm

Python có thể xử lý các tệp nhị phân không?

Python có các công cụ để làm việc với các tệp nhị phân. Các tệp nhị phân sử dụng các chuỗi kiểu byte. Điều này có nghĩa là khi đọc dữ liệu nhị phân từ một tệp, một đối tượng kiểu byte được trả về. Tệp nhị phân được mở bằng hàm open[], có tham số chế độ chứa ký tự 'b'

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ừ điển từ tệp nhị phân trong Python?

Chúng tôi có thể đọc từ điển từ một tệp theo 3 cách. .
Sử dụng json. phương thức tải []. Chuyển đổi chuỗi từ điển hợp lệ thành dạng json
sử dụng ast. phương thức literal_eval[]. Hàm an toàn hơn hàm eval và cũng có thể được sử dụng để chuyển đổi xen kẽ tất cả các loại dữ liệu ngoài từ điển
Sử dụng dưa chua

Chủ Đề