Làm cách nào để biết tệp có phải là tệp nhị phân (không phải văn bản) trong python không?
Tôi đang tìm kiếm qua một tập hợp lớn các tệp trong python và tiếp tục nhận được các kết quả phù hợp trong các tệp nhị phân. Điều này làm cho đầu ra trông cực kỳ lộn xộn.
Tôi biết tôi có thể sử dụng grep -I
, nhưng tôi đang làm nhiều việc với dữ liệu hơn những gì grep cho phép.
Trước đây, tôi sẽ chỉ tìm kiếm các ký tự lớn hơn 0x7f
, nhưng utf8
và những thứ tương tự, biến điều đó thành không thể trên các hệ thống hiện đại. Lý tưởng nhất là giải pháp sẽ nhanh chóng, nhưng bất kỳ giải pháp nào cũng sẽ làm được.
grep
bản thân nó sử dụng để xác định các tệp nhị phân tương tự như chiến lược được đăng bởi Jorge Orpinel bên dưới . Trừ khi bạn đặt -z
tùy chọn, nó sẽ chỉ quét ký tự null ( "\000"
) trong tệp. Với -z
, nó quét tìm "\200"
. Những người quan tâm và / hoặc hoài nghi có thể kiểm tra dòng 1126 của grep.c
. Xin lỗi, tôi không thể tìm thấy trang web có mã nguồn, nhưng tất nhiên bạn có thể lấy nó từ gnu.org hoặc qua một bản phân phối .
git diff
và GNU diff
cũng sử dụng cùng một chiến lược. Tôi không chắc liệu nó có phổ biến như vậy không vì nó nhanh hơn và dễ dàng hơn nhiều so với giải pháp thay thế, hay chỉ vì sự hiếm hoi tương đối của các tệp UTF-16 trên các hệ thống có xu hướng cài đặt các utils này.