Cảnh báo. Có vẻ như bạn đang sử dụng Dodona trong một trang web khác, vì vậy có thể không phải mọi thứ đều hoạt động bình thường. Hãy cho giáo viên của bạn biết để họ có thể giải quyết vấn đề bằng cách điều chỉnh môi trường học tập. Trong thời gian chờ đợi, bạn có thể nhấp vào liên kết này để mở Dodona trong một cửa sổ mới
Python cho phép bạn xử lý nhiều loại tệp như tệp văn bản, tệp csv và thậm chí cả hình ảnh. Đôi khi bạn có thể cần đọc tệp nhị phân trong python. Trong bài viết này, chúng ta sẽ xem xét cách đọc tệp nhị phân trong python. Chúng tôi cũng sẽ xem xét các trường hợp sử dụng khác nhau của việc đọc tệp nhị phân thường được các nhà phát triển sử dụng
Cách đọc tệp nhị phân trong Python
Đây là cách đọc tệp nhị phân trong python. Giả sử bạn có một tệp nhị phân tại /home/ubuntu/data. thùng rác. Trước tiên, chúng tôi sẽ ghi một số dữ liệu vào tệp nhị phân của mình. Để làm được điều đó, bạn có thể mở tệp bằng chức năng mở với cờ wb
file = open["/home/ubuntu/data.bin","wb"] sentence = bytearray["Hello world".encode["ascii"]] file.write[sentence] file.close[]
Chúng tôi sử dụng chức năng mã hóa để mã hóa chuỗi đầu tiên của chúng tôi thành mã hóa ký tự ascii. Sau đó, chúng tôi sử dụng hàm bytearray để chuyển đổi thành một mảng byte. Chúng tôi sử dụng tập tin. viết chức năng để ghi vào tập tin và tập tin. chức năng đóng để đóng tệp
Xin lưu ý, bạn có thể đọc/ghi bất kỳ tệp nào, không chỉ,. tệp bin, mà còn. văn bản,. csv hoặc bất kỳ tệp nào khác dưới dạng tệp nhị phân. Khi bạn chỉ định các cờ rb và wb bằng lệnh open, python sẽ tự động đọc và ghi tệp ở chế độ nhị phân
Đọc byte từ tệp nhị phân
Bây giờ bạn có thể dễ dàng đọc tệp bằng chức năng đọc
file = open["/home/ubuntu/data.bin","rb"] print[file.read[4]] file.close[]
Trong đoạn mã trên, chúng tôi mở tệp bằng chức năng mở và cờ rb. Sau đó, chúng tôi sử dụng chức năng đọc để đọc 4 byte từ nó, nghĩa là 4 ký tự. Chúng tôi sử dụng chức năng in để in nó và cuối cùng đóng tệp. Đây là đầu ra của lệnh trên
Hell
Đọc tệp nhị phân thành mảng
Đôi khi bạn có thể muốn đọc các byte từ hệ nhị phân sang một mảng. Trong những trường hợp như vậy, bạn có thể dễ dàng thực hiện việc này bằng cách sử dụng hàm list[] như bên dưới
file = open["/home/ubuntu/data.bin","rb"] arr=list[file.read[4]] print[arr] file.close[]
Trong đoạn mã trên, chúng tôi mở tệp ở chế độ nhị phân để đọc. Sau đó sử dụng chức năng đọc để đọc 4 byte đầu tiên. Ta truyền vào hàm list[] để chuyển chuỗi thành mảng. Đây là đầu ra của mã trên
['H','e','l','l']
Python đọc từng dòng tệp nhị phân
Nhiều lần bạn có thể cần đọc từng dòng tệp nhị phân. Trong trường hợp này, trước tiên chúng tôi viết nhiều dòng vào tệp của mình bằng hàm writelines như được hiển thị
lines=["Welcome to fedingo","Good Morning"] file=open["/home/ubuntu/data.bin","wb"] file.writelines[lines] file.close[]
Đoạn mã trên sẽ viết 2 dòng vào tệp của chúng tôi. Bây giờ chúng tôi sẽ mở lại tệp của mình để đọc ở chế độ nhị phân và sử dụng hàm readline để đọc một dòng từ tệp đó
file=open["/home/ubuntu/data.bin","rb"] line=file.readline[] print[line] file.close[]
Đây là đầu ra của lệnh trên
Welcome to Fedingo
Trong bài viết này, chúng tôi đã xem xét nhiều cách khác nhau để đọc và ghi tệp nhị phân. Điều quan trọng cần lưu ý là bạn có thể mở bất kỳ tệp nào dưới dạng tệp nhị phân, sử dụng cờ rb và wb để đọc và ghi tương ứng. Khi bạn đã mở tệp, hãy sử dụng hàm read[] để đọc byte từ và hàm write[] để ghi byte tương ứng vào tệp nhị phân của bạn. Ngoài ra, bạn có thể sử dụng hàm readline[] để đọc các dòng từ và writelines[] để ghi các dòng tương ứng vào tệp nhị phân của bạn
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 không được định dạng đều được lưu trữ trong tệp nhị phân và tệp này không thể đọc được ở người và được máy tính sử dụng trực tiếp. Khi tệp nhị phân được yêu cầu đọc hoặc chuyển từ vị trí này sang vị trí khác, nội dung của tệp được chuyển đổi hoặc mã hóa thành định dạng mà con người có thể đọc được. Phần mở rộng của tệp nhị phân là. thùng rác. Nội dung của tệp nhị phân có thể được đọc bằng cách sử dụng chức năng hoặc mô-đun tích hợp. Các cách khác nhau để đọc tệp nhị phân trong 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 là tạo một hoặc nhiều tệp nhị phân để sử dụng trong tập lệnh mẫu. Kịch bản của hai tệp python đã đưa ra bên dưới để tạo hai tệp nhị phân. nhị phân1. py sẽ tạo một tệp nhị phân có tên chuỗi. bin sẽ chứa dữ liệu chuỗi và tệp nhị phân2. py sẽ tạo một tệp nhị phân có tên number_list. bin sẽ chứa danh sách dữ liệu số
nhị phân1. py
# Mở trình xử lý tệp để tạo tệp nhị phân
file_handler = mở["string. bin", "wb"]
# Thêm hai dòng văn bản vào tệp nhị phân
file_handler. viết[ b "Chào mừng bạn đến với LinuxHint. \n Tìm hiểu lập trình Python. "]
# Đóng trình xử lý tệp
file_handler. đóng[]
nhị phân2. py
# Mở trình xử lý tệp để tạo tệp nhị phân
tệp=mở["number_list. bin","wb"]
# Khai báo danh sách các giá trị số
số =[10,30,45,60,70,85,99]
# Chuyển đổi danh sách thành mảng
dãy =dãy byte[ số ]
# Ghi mảng vào file
tệp . viết[ xóa ]
tệp . đóng[]
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 một tệp python với đoạn mã sau. Hàm open[] dùng để mở chuỗi. thùng để đọc. Hàm read[] đã được sử dụng để đọc 7 ký tự từ tệp trong mỗi lần lặp 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ở["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
while data_byte.
in[ byte_dữ liệu ]
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ở['string. bin', 'rb'] as 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
Đầu ra sau sẽ xuất hiện sau khi thực hiện đoạn mã 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 với tập lệnh sau để đọc tệp nhị phân có tên number_list. thùng đã tạo trước đó. Tệp nhị phân này chứa 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 đổi thành danh sách trước khi in
# Mở tệp nhị phân để đọc
tệp = mở["number_list. bin", "rb"]
# Đọc năm số đầu tiên thành một danh sách
số = danh sách[tệp.đọc[5]]
# In danh sách
in[ số ]
# Đóng tệp
tệp . đóng[]
đầu ra
Đầu ra sau sẽ xuất hiện sau khi thực hiện đoạn mã trên. Tệp nhị phân chứa 7 số và năm số đầu tiên được in ở đầ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 danh sách bằng cách sử dụng mô-đun NumPy đã được trình bày 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 thi lệnh từ thiết bị đầu cuối hoặc cài đặt gói NumPy trong trình chỉnh sửa Python, nơi tập lệnh sẽ được thực thi. 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 tệp văn bản hoặc tệp nhị phân
Cú pháp của tofile[]
ndarray. tofile[file, sep ='', format='%s']
Đố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. từ tệp[tệp, dtype =float, count=- 1, sep='', offset=0, *, like=None]
Đố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 sẽ được cung cấp trong đối số này. dtype xác định kiểu dữ liệu của mảng được trả về. Số lượng được sử dụng để đếm số lượng mặt hàng. Mục đích của sep là để phân 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 với tập lệnh sau để tạo tệp nhị phân bằ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 numpy as np
# Khai báo mảng numpy
nparray = np. mảng[[34, 89, 30, 45, 90, 11]]
# Tạo tập tin nhị phân từ mảng numpy
mảng np. tofile["list. thùng"]
# In dữ liệu từ tệp nhị phân
in[ np. từ tệp["danh sách. bin", dtype = np. int64]]
đầu ra
Đầu ra sau sẽ xuất hiện sau khi thực hiện đoạn mã trên
Phần kết luận
Ba cách khác nhau để đọc tệp nhị phân đã được trình bày 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