Đọc tệp thành byte python
Chào. tôi có một câu hỏi thực sự cơ bản (rất mới đối với python). làm cách nào để đọc toàn bộ tệp nhị phân? . //www. nhà phát triển. com/content/working-binary-data-python , 3 là đọc toàn bộ tệp cùng một lúc. vì vậy tôi có một. dng để kiểm tra, đó là 16. 2mb, và tôi đã làm Show
tôi đang sử dụng trình soạn thảo hex để xem liệu dữ liệu từ. dng được sao chép vào. tệp thô nhưng chỉ một phần của nó được sao chép. kết quả tương tự xảy ra khi tôi sử dụng vòng lặp 4 như
nếu tôi đặt kích thước (1024) trong 5, chỉ một vài dòng cuối cùng của dữ liệu được ghi. vậy nó có thực sự đọc toàn bộ tệp không và tại phần "ghi" là nơi nó trở nên phức tạp (không ghi hoàn chỉnh)? con trăn 0 0 Chia sẻ
Câu trả lời được đề xuấtĐã trả lời bởi Gribouillis 1.391 trong một bài đăng từ 4 năm trước Chuyển tới bài viết Tất cả 2 câu trả lờinadiam 0 Đăng bài chuyên nghiệp trong đào tạo Được chứ. Tôi vừa tìm thấy
nhưng các câu hỏi của tôi vẫn còn nhiều vấn đề vì như tôi đã đề cập, tệp hiện tại tôi đang kiểm tra chỉ là 16. 2mb và tệp thực sẽ được sử dụng là 8gb và tôi đã kiểm tra mã này với tệp khổng lồ đó và máy tính xách tay của tôi bị treo. vì vậy một vài câu hỏi/suy nghĩ được cập nhật
Trừ khi tệp bạn đang đọc thực sự lớn, còn không thì việc đưa tất cả vào bộ nhớ trong một lần nhấp là cách nhanh nhất và nói chung là thuận tiện nhất cho bất kỳ quá trình xử lý tiếp theo nào. Hàm tích hợp sẵn file_object = open('thefile.txt') all_the_text = file_object.read( ) file_object.close( )0 tạo đối tượng tệp Python. Với đối tượng đó, bạn gọi phương thức file_object = open('thefile.txt') all_the_text = file_object.read( ) file_object.close( )1 để lấy tất cả nội dung (dù là văn bản hay nhị phân) dưới dạng một chuỗi lớn duy nhất. Nếu nội dung là văn bản, bạn có thể chọn tách ngay chuỗi đó thành một danh sách các dòng, bằng phương thức file_object = open('thefile.txt') all_the_text = file_object.read( ) file_object.close( )2 hoặc bằng phương thức chuyên biệt file_object = open('thefile.txt') all_the_text = file_object.read( ) file_object.close( )3. Vì việc chia tách như vậy là một nhu cầu thường xuyên, bạn cũng có thể gọi trực tiếp file_object = open('thefile.txt') all_the_text = file_object.read( ) file_object.close( )4 trên đối tượng tệp, để thao tác nhanh hơn và thuận tiện hơn một chút. Trong Python 2. 2, bạn cũng có thể chuyển đối tượng tệp trực tiếp dưới dạng đối số duy nhất cho loại tích hợp sẵn file_object = open('thefile.txt') all_the_text = file_object.read( ) file_object.close( )5 Trên các hệ thống tương tự Unix và Unix, chẳng hạn như các biến thể Linux và BSD, không có sự phân biệt thực sự giữa tệp văn bản và tệp dữ liệu nhị phân. Tuy nhiên, trên các hệ thống Windows và Macintosh, các dấu kết thúc dòng trong tệp văn bản không được mã hóa bằng dấu phân cách 7 tiêu chuẩn, mà bằng file_object = open('thefile.txt') all_the_text = file_object.read( ) file_object.close( )7 và file_object = open('thefile.txt') all_the_text = file_object.read( ) file_object.close( )8, tương ứng. Python thay mặt bạn dịch các ký tự kết thúc dòng thành 7, nhưng điều này có nghĩa là bạn cần thông báo cho Python khi mở tệp nhị phân để nó không thực hiện dịch. Để làm điều đó, hãy sử dụng list_of_all_the_lines = file_object.readlines( ) list_of_all_the_lines = file_object.read( ).splitlines(1) list_of_all_the_lines = file_object.read().splitlines( ) list_of_all_the_lines = file_object.read( ).split('\n')0 làm đối số thứ hai cho file_object = open('thefile.txt') all_the_text = file_object.read( ) file_object.close( )0. Điều này là vô hại ngay cả trên các nền tảng giống Unix và ngay cả ở đó, đó là một thói quen tốt để phân biệt tệp nhị phân với tệp văn bản, mặc dù điều đó không bắt buộc trong trường hợp đó. Một thói quen tốt như vậy sẽ làm cho chương trình của bạn dễ hiểu hơn, cũng như cho phép bạn di chuyển chúng giữa các nền tảng dễ dàng hơn Bạn có thể gọi các phương thức như file_object = open('thefile.txt') all_the_text = file_object.read( ) file_object.close( )1 trực tiếp trên đối tượng tệp do hàm file_object = open('thefile.txt') all_the_text = file_object.read( ) file_object.close( )0 tạo ra, như được hiển thị trong đoạn mã đầu tiên của giải pháp. Khi bạn thực hiện việc này, ngay sau khi thao tác đọc kết thúc, bạn không còn tham chiếu đến đối tượng tệp nữa. Trong thực tế, Python nhận thấy thiếu tham chiếu ngay lập tức và ngay lập tức đóng tệp. Tuy nhiên, tốt hơn là gắn một tên với kết quả của file_object = open('thefile.txt') all_the_text = file_object.read( ) file_object.close( )0, để bạn có thể tự gọi 6 một cách rõ ràng khi hoàn thành tệp. Điều này đảm bảo rằng tệp luôn mở trong thời gian ngắn nhất có thể, ngay cả trên các nền tảng như Jython và các phiên bản tương lai giả định của Python trên đó các cơ chế thu gom rác tiên tiến hơn có thể trì hoãn việc đóng tự động mà Python thực hiệnNếu bạn chọn đọc từng tệp một, thay vì đọc tất cả cùng một lúc, các thành ngữ sẽ khác. Đây là cách đọc tệp nhị phân 100 byte mỗi lần, cho đến khi bạn đọc đến cuối tệp 1Truyền một đối số list_of_all_the_lines = file_object.readlines( ) list_of_all_the_lines = file_object.read( ).splitlines(1) list_of_all_the_lines = file_object.read().splitlines( ) list_of_all_the_lines = file_object.read( ).split('\n')6 cho phương thức file_object = open('thefile.txt') all_the_text = file_object.read( ) file_object.close( )1 đảm bảo rằng file_object = open('thefile.txt') all_the_text = file_object.read( ) file_object.close( )1 sẽ chỉ đọc các byte tiếp theo của list_of_all_the_lines = file_object.readlines( ) list_of_all_the_lines = file_object.read( ).splitlines(1) list_of_all_the_lines = file_object.read().splitlines( ) list_of_all_the_lines = file_object.read( ).split('\n')6 (hoặc ít hơn, nếu tệp gần cuối). file_object = open('thefile.txt') all_the_text = file_object.read( ) file_object.close( )1 trả về chuỗi trống khi đến cuối tệp Đọc một tệp văn bản một dòng tại một thời điểm là một nhiệm vụ thường xuyên. Trong Python 2. 2 trở lên, đây là cách tiếp cận dễ nhất, rõ ràng nhất và nhanh nhất 7Một số thành ngữ phổ biến trong các phiên bản Python cũ hơn. Một thành ngữ mà bạn có thể chắc chắn sẽ hoạt động ngay cả trên các phiên bản Python cực kỳ cũ, chẳng hạn như 1. 5. 2, khá giống với thành ngữ để đọc một tệp nhị phân một đoạn tại một thời điểm 8list_of_all_the_lines = list(file_object)1, giống như file_object = open('thefile.txt') all_the_text = file_object.read( ) file_object.close( )1, trả về chuỗi trống khi đến cuối tệp. Lưu ý rằng phần cuối của tệp có thể dễ dàng phân biệt với một dòng trống vì dòng sau được trả về bởi list_of_all_the_lines = list(file_object)1 là 7, đây không phải là một chuỗi trống mà là một chuỗi có độ dài 1công thức 4. 3; Làm cách nào để đọc từng byte từ tệp trong Python?bạn có thể sử dụng bin(ord('b')) . replace('b', '') bin() nó cung cấp cho bạn biểu diễn nhị phân với 'b' sau bit cuối cùng, bạn phải xóa nó. Ngoài ra, ord() cung cấp cho bạn số ASCII cho ký tự được mã hóa char hoặc 8-bit/1 Byte.
Làm cách nào để đọc mảng byte trong Python?Trăn. hàm bytearray()
. Nó đưa ra một chuỗi các số nguyên có thể thay đổi trong phạm vi 0 <= x < 256. trả lại. Trả về một mảng byte có kích thước đã cho. tham số nguồn có thể được sử dụng để khởi tạo mảng theo một số cách khác nhau. bytearray() method returns a bytearray object which is an array of given bytes. It gives a mutable sequence of integers in the range 0 <= x < 256. Returns: Returns an array of bytes of the given size. source parameter can be used to initialize the array in few different ways.
làm thế nào. đọc công việc bằng Python?read() trong Python được sử dụng để đọc tối đa n byte từ tệp được liên kết với bộ mô tả tệp đã cho . Nếu đã đến cuối tệp trong khi đọc byte từ bộ mô tả tệp đã cho, os. phương thức read() sẽ trả về một đối tượng byte trống cho tất cả các byte còn lại được đọc. |