Hướng dẫn are python files binary or text? - tệp python là tệp nhị phân hay văn bản?
Làm thế nào tôi có thể biết nếu một tệp là nhị phân (không phải văn bản) trong Python? Show
Tôi đang tìm kiếm thông qua một tập hợp lớn các tệp trong Python và tiếp tục nhận các trận đấu trong các tệp nhị phân. Điều này làm cho đầu ra trông vô cùng lộn xộn. Tôi biết tôi có thể sử dụng 3, nhưng tôi đang làm nhiều hơn với dữ liệu hơn là những gì GREP cho phép.Trong quá khứ, tôi sẽ chỉ tìm kiếm các nhân vật lớn hơn 4, nhưng 5 và tương tự, làm cho điều đó không thể trên các hệ thống hiện đại. Lý tưởng nhất, giải pháp sẽ nhanh.
Martin Thoma Huy hiệu vàng 114K148574 Huy hiệu bạc879 Huy hiệu đồng148 gold badges574 silver badges879 bronze badges Khi được hỏi ngày 22 tháng 5 năm 2009 lúc 16:09May 22, 2009 at 16:09
7
Một phương thức khác dựa trên tệp (1) hành vi:
Example:
Đã trả lời ngày 12 tháng 9 năm 2011 lúc 18:44Sep 12, 2011 at 18:44
JFSJFSjfs 384K183 Huy hiệu vàng949 Huy hiệu bạc1619 Huy hiệu Đồng183 gold badges949 silver badges1619 bronze badges 13 Bạn cũng có thể sử dụng mô -đun Mimetypes:
Nó khá dễ dàng để biên dịch một danh sách các loại mime nhị phân. Ví dụ, Apache phân phối với tệp mime.types mà bạn có thể phân tích thành một tập hợp danh sách, nhị phân và văn bản và sau đó kiểm tra xem MIME có nằm trong danh sách văn bản hoặc danh sách nhị phân của bạn không.
Nico Schlömer 49.1K25 Huy hiệu vàng186 Huy hiệu bạc226 Huy hiệu Đồng25 gold badges186 silver badges226 bronze badges Đã trả lời ngày 22 tháng 5 năm 2009 lúc 16:21May 22, 2009 at 16:21
Gavin M. Roygavin M. RoyGavin M. Roy 4.3714 Huy hiệu vàng35 Huy hiệu bạc29 Huy hiệu đồng4 gold badges35 silver badges29 bronze badges 7 Nếu bạn đang sử dụng python3 với UTF-8, nó sẽ thẳng tiến, chỉ cần mở tệp ở chế độ văn bản và dừng xử lý nếu bạn nhận được 6. Python3 sẽ sử dụng unicode khi xử lý các tệp ở chế độ văn bản (và bytearray ở chế độ nhị phân) - nếu mã hóa của bạn không thể giải mã các tệp tùy ý, rất có khả năng bạn sẽ nhận được 6.Example:
Đã trả lời ngày 16 tháng 5 năm 2015 lúc 8:14May 16, 2015 at 8:14
Skykingskykingskyking Huy hiệu vàng 13.4K11 gold badge34 silver badges55 bronze badges 1 Thử cái này:
Đã trả lời ngày 9 tháng 6 năm 2010 lúc 1:14Jun 9, 2010 at 1:14
5 Nếu nó giúp, nhiều loại nhị phân bắt đầu bằng một số ma thuật. Dưới đây là danh sách các chữ ký tập tin. Đã trả lời ngày 22 tháng 5 năm 2009 lúc 16:23May 22, 2009 at 16:23
Shane C. Masonshane C. MasonShane C. Mason 7.3483 Huy hiệu vàng25 Huy hiệu bạc33 Huy hiệu Đồng3 gold badges25 silver badges33 bronze badges 2 Đây là một đề xuất sử dụng lệnh tệp Unix:
Ví dụ sử dụng: >>> istext('/etc/motd') True >>> istext('/vmlinuz') False >>> open('/tmp/japanese').read() '\xe3\x81\x93\xe3\x82\x8c\xe3\x81\xaf\xe3\x80\x81\xe3\x81\xbf\xe3\x81\x9a\xe3\x81\x8c\xe3\x82\x81\xe5\xba\xa7\xe3\x81\xae\xe6\x99\x82\xe4\xbb\xa3\xe3\x81\xae\xe5\xb9\x95\xe9\x96\x8b\xe3\x81\x91\xe3\x80\x82\n' >>> istext('/tmp/japanese') # works on UTF-8 True Nó có các nhược điểm của việc không thể di động đối với Windows (trừ khi bạn có một cái gì đó giống như lệnh 8 ở đó) và phải sinh ra một quy trình bên ngoài cho mỗi tệp, có thể không thể ngon miệng.Đã trả lời ngày 22 tháng 5 năm 2009 lúc 16:28May 22, 2009 at 16:28
Jacob Gabrielsonjacob GabrielsonJacob Gabrielson 33.5K15 Huy hiệu vàng45 Huy hiệu bạc64 Huy hiệu đồng15 gold badges45 silver badges64 bronze badges 2 Sử dụng Thư viện Binaryornot (GitHub). Nó rất đơn giản và dựa trên mã được tìm thấy trong câu hỏi StackOverflow này. Bạn thực sự có thể viết điều này trong 2 dòng mã, tuy nhiên gói này giúp bạn không phải viết và kiểm tra kỹ lưỡng 2 dòng mã đó với tất cả các loại tệp kỳ lạ, đa nền tảng.
Kenorb Phù bằng vàng 145K7676 gold badges656 silver badges714 bronze badges Đã trả lời ngày 7 tháng 11 năm 2014 lúc 9:10Nov 7, 2014 at 9:10
Guettliguettliguettli 24K66 Huy hiệu vàng309 Huy hiệu bạc592 Huy hiệu Đồng66 gold badges309 silver badges592 bronze badges Chúng ta có thể sử dụng python để kiểm tra xem tệp có nhị phân không, vì nó không thành công nếu chúng ta cố gắng mở tệp nhị phân ở chế độ văn bản
Caco 1.5331 Huy hiệu vàng26 Huy hiệu bạc49 Huy hiệu đồng1 gold badge26 silver badges49 bronze badges Đã trả lời ngày 24 tháng 7 năm 2018 lúc 9:25Jul 24, 2018 at 9:25
SerhiiserhiiSerhii Huy hiệu 691 Bạc1 Huy hiệu Đồng1 silver badge1 bronze badge 2 Thông thường bạn phải đoán. Bạn có thể xem các phần mở rộng như một manh mối, nếu các tệp có chúng. Bạn cũng có thể nhận ra các định dạng nhị phân biết và bỏ qua chúng. Nếu không, hãy xem tỷ lệ của các byte ASCII không thể in mà bạn có và đoán từ đó. Bạn cũng có thể thử giải mã từ UTF-8 và xem liệu điều đó có tạo ra đầu ra hợp lý không. Đã trả lời ngày 22 tháng 5 năm 2009 lúc 16:14May 22, 2009 at 16:14
Douglas Leederdouglas LeederDouglas Leeder 51.2K9 Huy hiệu vàng91 Huy hiệu bạc136 Huy hiệu đồng9 gold badges91 silver badges136 bronze badges Một giải pháp ngắn hơn, với cảnh báo UTF-16:
Đã trả lời ngày 2 tháng 7 năm 2012 lúc 21:45Jul 2, 2012 at 21:45
2 Hãy thử sử dụng Python-Magic hiện được duy trì hiện không phải là cùng một mô-đun trong câu trả lời của @Kami Kisiel. Điều này hỗ trợ tất cả các nền tảng bao gồm Windows tuy nhiên bạn sẽ cần các tệp nhị phân 9. Điều này được giải thích trong readme.Không giống như mô -đun Mimetypes, nó không sử dụng tiện ích mở rộng của tệp và thay vào đó kiểm tra nội dung của tệp.
Đã trả lời ngày 17 tháng 6 năm 2019 lúc 17:22Jun 17, 2019 at 17:22
Ăn tại Joeseat tại JoesEat at Joes 4.7501 Huy hiệu vàng36 Huy hiệu bạc37 Huy hiệu đồng1 gold badge36 silver badges37 bronze badges Nếu bạn không ở trên Windows, bạn có thể sử dụng Python Magic để xác định FileType. Sau đó, bạn có thể kiểm tra xem đó là loại văn bản/ mime. Đã trả lời ngày 22 tháng 5 năm 2009 lúc 20:55May 22, 2009 at 20:55
Kamil Kisielkamil KisielKamil Kisiel 19.1k11 Huy hiệu vàng46 Huy hiệu bạc54 Huy hiệu đồng11 gold badges46 silver badges54 bronze badges Đây là một chức năng trước tiên kiểm tra xem tệp có bắt đầu bằng BOM hay không và nếu không tìm kiếm một byte số 0 trong các byte 8192 ban đầu: 0Về mặt kỹ thuật, việc kiểm tra BOM UTF-8 là không cần thiết vì nó không nên chứa số byte cho tất cả các mục đích thực tế. Nhưng vì nó là một mã hóa rất phổ biến, nhanh hơn để kiểm tra BOM ngay từ đầu thay vì quét tất cả 8192 byte cho 0. Đã trả lời ngày 4 tháng 5 năm 2017 lúc 17:21May 4, 2017 at 17:21
Roskakoriroskakoriroskakori 2.9091 Huy hiệu vàng27 Huy hiệu bạc27 Huy hiệu đồng1 gold badge27 silver badges27 bronze badges 1Tài liệu Đã trả lời ngày 29 tháng 5 năm 2020 lúc 9:26May 29, 2020 at 9:26
j-teslaj-teslaj-tesla 471 Huy hiệu bạc7 Huy hiệu đồng1 silver badge7 bronze badges Hầu hết các chương trình coi tệp là nhị phân (bất kỳ tệp nào không phải là "định hướng dòng") nếu nó chứa một ký tự null. Dưới đây là phiên bản 0 ( 1) của Perl được triển khai trong Python: 2
Nguồn: "Guess If File là văn bản hoặc nhị phân" của Perl được triển khai trong Python
Umläute 26.9k8 Huy hiệu vàng60 Huy hiệu bạc118 Huy hiệu đồng8 gold badges60 silver badges118 bronze badges Đã trả lời ngày 1 tháng 6 năm 2015 lúc 11:39Jun 1, 2015 at 11:39
Kenorbkenorbkenorb Phù bằng vàng 145K7676 gold badges656 silver badges714 bronze badges Tôi đến đây để tìm kiếm chính xác điều tương tự-một giải pháp toàn diện được cung cấp bởi thư viện tiêu chuẩn để phát hiện nhị phân hoặc văn bản. Sau khi xem xét các tùy chọn mà mọi người đề xuất, lệnh tệp NIX có vẻ là lựa chọn tốt nhất (tôi chỉ phát triển cho Linux Boxen). Một số người khác đã đăng các giải pháp bằng cách sử dụng tệp nhưng theo ý kiến của tôi, chúng rất phức tạp, vì vậy đây là những gì tôi đã nghĩ ra:file command looks to be the best choice (I'm only developing for linux boxen). Some others posted solutions using file but they are unnecessarily complicated in my opinion, so here's what I came up with: 3Nó sẽ không cần phải nói, nhưng mã của bạn gọi chức năng này sẽ đảm bảo bạn có thể đọc một tệp trước khi kiểm tra nó, nếu không, điều này sẽ bị phát hiện nhầm tệp là nhị phân. Đã trả lời ngày 4 tháng 1 năm 2012 lúc 7:51Jan 4, 2012 at 7:51
rsawrsawrsaw 3.2352 Huy hiệu vàng27 Huy hiệu bạc 30 Huy hiệu Đồng2 gold badges27 silver badges30 bronze badges Tôi đoán rằng giải pháp tốt nhất là sử dụng hàm đoán. Nó giữ một danh sách với một số mô phỏng và bạn cũng có thể bao gồm các loại của riêng bạn. Đây là kịch bản mà tôi đã làm để giải quyết vấn đề của mình: 4Nó nằm trong một lớp, như bạn có thể thấy dựa trên cấu trúc của mã. Nhưng bạn có thể thay đổi khá nhiều những thứ bạn muốn thực hiện nó trong ứng dụng của mình. Nó khá đơn giản để sử dụng. Phương thức getTextFiles trả về một đối tượng danh sách với tất cả các tệp văn bản nằm trên thư mục bạn truyền trong biến đường dẫn.
Kenorb Phù bằng vàng 145K7676 gold badges656 silver badges714 bronze badges
Tôi đến đây để tìm kiếm chính xác điều tương tự-một giải pháp toàn diện được cung cấp bởi thư viện tiêu chuẩn để phát hiện nhị phân hoặc văn bản. Sau khi xem xét các tùy chọn mà mọi người đề xuất, lệnh tệp NIX có vẻ là lựa chọn tốt nhất (tôi chỉ phát triển cho Linux Boxen). Một số người khác đã đăng các giải pháp bằng cách sử dụng tệp nhưng theo ý kiến của tôi, chúng rất phức tạp, vì vậy đây là những gì tôi đã nghĩ ra:Aug 2, 2010 at 14:11
Nó sẽ không cần phải nói, nhưng mã của bạn gọi chức năng này sẽ đảm bảo bạn có thể đọc một tệp trước khi kiểm tra nó, nếu không, điều này sẽ bị phát hiện nhầm tệp là nhị phân.Đã trả lời ngày 4 tháng 1 năm 2012 lúc 7:51 5rsawrsaw 63.2352 Huy hiệu vàng27 Huy hiệu bạc 30 Huy hiệu Đồng 7Tôi đoán rằng giải pháp tốt nhất là sử dụng hàm đoán. Nó giữ một danh sách với một số mô phỏng và bạn cũng có thể bao gồm các loại của riêng bạn. Đây là kịch bản mà tôi đã làm để giải quyết vấn đề của mình:May 29, 2017 at 23:48
Nó nằm trong một lớp, như bạn có thể thấy dựa trên cấu trúc của mã. Nhưng bạn có thể thay đổi khá nhiều những thứ bạn muốn thực hiện nó trong ứng dụng của mình. Nó khá đơn giản để sử dụng. Phương thức getTextFiles trả về một đối tượng danh sách với tất cả các tệp văn bản nằm trên thư mục bạn truyền trong biến đường dẫn.Rob Truxal Kenorb3 gold badges19 silver badges39 bronze badges 0 Đã trả lời ngày 2 tháng 8 năm 2010 lúc 14:11 8trên *Nix: Nếu bạn có quyền truy cập vào lệnh shell 8, Shlex có thể giúp làm cho mô-đun phụ có thể sử dụng được nhiều hơn:May 22, 2009 at 16:14
Hoặc, bạn cũng có thể dán nó vào vòng lặp để lấy đầu ra cho tất cả các tệp trong DIR hiện tại bằng cách sử dụng:fortran hoặc cho tất cả các tiểu khu:25 gold badges133 silver badges174 bronze badges 5 Đã trả lời ngày 29 tháng 5 năm 2017 lúc 23:48 9Rob Truxalrob Truxal 05.2783 Huy hiệu vàng19 Huy hiệu bạc39 Huy hiệu đồng 1Bạn đang ở Unix? Nếu vậy, thì hãy thử:Jun 1, 2015 at 18:35
Kenorbkenorbkenorb Phù bằng vàng 145K7676 gold badges656 silver badges714 bronze badges Tôi đến đây để tìm kiếm chính xác điều tương tự-một giải pháp toàn diện được cung cấp bởi thư viện tiêu chuẩn để phát hiện nhị phân hoặc văn bản. Sau khi xem xét các tùy chọn mà mọi người đề xuất, lệnh tệp NIX có vẻ là lựa chọn tốt nhất (tôi chỉ phát triển cho Linux Boxen). Một số người khác đã đăng các giải pháp bằng cách sử dụng tệp nhưng theo ý kiến của tôi, chúng rất phức tạp, vì vậy đây là những gì tôi đã nghĩ ra: Nó sẽ không cần phải nói, nhưng mã của bạn gọi chức năng này sẽ đảm bảo bạn có thể đọc một tệp trước khi kiểm tra nó, nếu không, điều này sẽ bị phát hiện nhầm tệp là nhị phân. 2Đã trả lời ngày 4 tháng 1 năm 2012 lúc 7:51Mar 21 at 15:31
rsawrsawRexBarker 3.2352 Huy hiệu vàng27 Huy hiệu bạc 30 Huy hiệu Đồng13 silver badges12 bronze badges Các tệp Python có nhị phân không?Trong Python, mô -đun IO cung cấp các phương thức của ba loại hoạt động IO; Các tập tin nhị phân thô, tệp nhị phân được đệm và tệp văn bản.raw binary files, buffered binary files, and text files.
Các tệp văn bản Python có phải không?Một tệp trong Python được phân loại là văn bản hoặc nhị phân và sự khác biệt giữa hai loại tệp là quan trọng.Các tệp văn bản được cấu trúc như một chuỗi các dòng, trong đó mỗi dòng bao gồm một chuỗi các ký tự.Đây là những gì bạn biết là mã hoặc cú pháp., and the difference between the two file types is important. Text files are structured as a sequence of lines, where each line includes a sequence of characters. This is what you know as code or syntax.
Làm thế nào bạn có thể biết nếu một tệp là nhị phân hoặc văn bản?Tiện ích mở rộng tệp chúng ta thường có thể biết nếu một tệp là nhị phân hoặc văn bản dựa trên phần mở rộng tệp của nó.Điều này là do theo quy ước, tiện ích mở rộng phản ánh định dạng tệp và cuối cùng là định dạng tệp chỉ ra xem dữ liệu tệp là nhị phân hay văn bản.based on its file extension. This is because by convention the extension reflects the file format, and it is ultimately the file format that dictates whether the file data is binary or text.
Tệp định dạng nhị phân trong Python là gì?Khoa học dữ liệu thực tế bằng cách sử dụng các tệp "nhị phân" Python là bất kỳ tệp nào trong đó định dạng không được tạo thành từ các ký tự có thể đọc được.Các tệp nhị phân có thể bao gồm từ các tệp hình ảnh như JPEG hoặc GIF, tệp âm thanh như mp3 hoặc định dạng tài liệu nhị phân như Word hoặc PDF.Trong Python, các tệp được mở ở chế độ văn bản theo mặc định.any files where the format isn't made up of readable characters. Binary files can range from image files like JPEGs or GIFs, audio files like MP3s or binary document formats like Word or PDF. In Python, files are opened in text mode by default. |