Bestimmen, ob ein MIME-Typ ist, binäre oder textbasierte
-
28-09-2019 - |
Frage
Gibt es eine Bibliothek, die, ob ein bestimmten Inhaltstyp ermöglicht die Bestimmung ist binär oder textbasiert?
Offensichtlich text/*
ist immer wörtlich, aber für Dinge wie application/json
, image/svg+xml
oder sogar application/x-latex
es ist recht schwierig, ohne die eigentlichen Daten zu inspizieren.
Lösung
Es ist ein Wrapper für libmagic für Python - pymagic . Das ist die einfachste Methode, um zu erreichen, was Sie wollen. Beachten Sie, dass Magie nur so gut wie der Fingerabdruck ist. Sie können falsch-positive Ergebnisse haben, wenn etwas ‚aussieht‘ wie ein anderes Dateiformat, aber die meisten Fälle pymagic wird dir geben, was Sie brauchen.
Eine Sache zu achten wäre die ‚einfache Lösung‘ zu prüfen, um zu sehen, ob einer der Charaktere ist ‚außerhalb‘ der druckbaren ASCII-Bereich, wie Sie wird wahrscheinlich Begegnung Unicode, die wie binären aussehen werden (und in der Tat, binär), obwohl es nur Textinhalt.
Andere Tipps
In der Regel Programme, die MIME-Typen bestimmen werden Ihnen auch sagen, den Zeichensatz. Zum Beispiel file(1)
(und entsprechende libmagic) die folgende Ausgabe geben:
> file --mime-encoding /bin/ls
/bin/ls: binary
> file --mime-encoding /etc/passwd
/etc/passwd: us-ascii