Як я можу визначити, чи файл є бінарним (нетекстовим) у python?
Я шукаю великий набір файлів у python і продовжую отримувати збіги у бінарних файлах. Це робить висновок неймовірно безладним.
Я знаю, що міг би скористатися grep -I, але я більше роблю дані, ніж те, що дозволяє grep.
У минулому я би просто шукав символів, більших за 0x7f, але utf8подібні, роблять це неможливим у сучасних системах. В ідеалі рішення було б швидким, але будь-яке рішення буде.
grepсама використовується для ідентифікації бінарних файлів, схожа на таку, яку розмістив Jorge Orpinel нижче . Якщо ви не встановите цю -zопцію, вона просто сканує нульовий символ ( "\000") у файлі. З -z, він сканує "\200". Зацікавлені та / або скептично можуть перевірити рядок 1126 grep.c. На жаль, не вдалося знайти веб-сторінку з вихідним кодом, але, звичайно, ви можете отримати її з gnu.org або через дистрибутив .
git diffі GNU diffтакож використовують однакову стратегію. Я не впевнений, чи є вона настільки поширеною, тому що це набагато швидше і простіше, ніж альтернатива, або якщо це лише через відносну рідкість файлів UTF-16 в системах, на яких встановлені ці утиліти.