Wie kann ich feststellen, ob eine Datei in Python binär (kein Text) ist?
Ich suche eine große Anzahl von Dateien in Python und erhalte immer wieder Übereinstimmungen in Binärdateien. Dadurch sieht die Ausgabe unglaublich chaotisch aus.
Ich weiß, dass ich verwenden könnte grep -I
, aber ich mache mehr mit den Daten, als grep zulässt.
In der Vergangenheit hätte ich nur nach Zeichen gesucht, die größer sind als 0x7f
, aber utf8
und dergleichen, was dies auf modernen Systemen unmöglich macht. Im Idealfall wäre die Lösung schnell, aber jede Lösung reicht aus.
grep
mit der Binärdateien identifiziert werden, ähnelt der von Jorge Orpinel unten . Sofern Sie die -z
Option nicht festlegen , wird nur nach einem Nullzeichen ( "\000"
) in der Datei gesucht. Mit -z
sucht es nach "\200"
. Interessierte und / oder Skeptiker können Zeile 1126 von überprüfen grep.c
. Entschuldigung, ich konnte keine Webseite mit dem Quellcode finden, aber Sie können sie natürlich von gnu.org oder über eine Distribution erhalten .
git diff
GNU als diff
auch GNU dieselbe Strategie. Ich bin mir nicht sicher, ob es so weit verbreitet ist, weil es so viel schneller und einfacher als die Alternative ist, oder ob es nur an der relativen Seltenheit von UTF-16-Dateien auf Systemen liegt, auf denen diese Utils installiert sind.