Bagaimana cara mengetahui apakah sebuah file biner (non-teks) dengan python?
Saya mencari melalui sekumpulan besar file dengan python, dan terus mendapatkan kecocokan dalam file biner. Ini membuat hasilnya terlihat sangat berantakan.
Saya tahu saya bisa menggunakan grep -I
, tetapi saya melakukan lebih banyak dengan data daripada yang diizinkan oleh grep.
Di masa lalu, saya hanya akan mencari karakter yang lebih besar dari 0x7f
, tetapi utf8
dan sejenisnya, membuatnya tidak mungkin pada sistem modern. Idealnya, solusi akan cepat, tetapi solusi apa pun akan berhasil.
grep
digunakan sendiri untuk mengidentifikasi file biner mirip dengan yang diposting oleh Jorge Orpinel di bawah ini . Kecuali Anda menyetel -z
opsinya, itu hanya akan memindai karakter null ( "\000"
) dalam file. Dengan -z
, itu memindai "\200"
. Mereka yang tertarik dan / atau skeptis dapat memeriksa baris 1126 dari grep.c
. Maaf, saya tidak bisa temukan halaman web dengan kode sumbernya, tapi tentu saja Anda bisa mendapatkannya dari gnu.org atau melalui distro .
git diff
dan GNU diff
juga menggunakan strategi yang sama. Saya tidak yakin apakah itu sangat lazim karena jauh lebih cepat dan lebih mudah daripada alternatifnya, atau apakah itu hanya karena kelangkaan relatif dari file UTF-16 pada sistem yang cenderung menginstal utilitas ini.