[Python-de] Dateiinformationen

Dr. Bernd Freistedt bf at mail.bfrei.net
Fri Aug 24 23:30:28 EDT 2001


---Detlef Lannert (python-de at starship.python.net) wrote on Fri, 24 Aug 2001 17:55:55 +0200
> On Fri, Aug 24, 2001 at 04:32:14PM -0200, Frank Raiser wrote:

>> Wie kann man schnell feststellen ob eine Datei binäre Daten oder Textdaten
>> enthält? Ich habe mir überlegt mittels re die ersten x Zeichen der Datei auf
>> nicht alphanumerische Zeichen zu testen. Aber das ist natürlich nicht gerade
>> der eleganteste Weg. Kennt da jemand eine bessere Möglichkeit?
> 
> Kommt drauf an, was Du konkret erwartest. Das Kommando "file" (auf
> unixoiden Plattformen) gibt sich viel Mühe, den Dateityp zu identifizieren
> (und kann sich trotzdem noch irren); wäre das eine Alternative?

Leider ist "file" ein wenig unscharf; kommt aber auch auf die
Vollstaendigkeit des magic-Files an.

Ich hatte das gleiche Problem einmal in der bash mit folgender
Bedingung geloest:

if [ `tail -1 datei.xyz | cat -v | egrep -n "\^\@"` -gt "0" ]

Ich gebe zu, es ist etwas tricky :-) Daher kommentiere ich:
In letzter Zeile werden durch cat -v Steuerzeichen sichtbar
gemacht, die mit egrep auf Hex 00 (^@) untersucht werden.
Zugrunde liegt die Annahme, dass Binaerdateien immer am Ende mit
Nullen aufgefuellt sind.
Vielleicht laesst sich der Ansatz mit Python aehnlich angehen.
Auf den Vorbehalt, dass der Filter zu unscharf waere, ist zu
bemerken, dass ich bei der Behandlung eines Datenfriedhof-Baumes
von ueber 300.000 Dateien damit Erfolg hatte.

Gruessli
Bernd





More information about the Python-de mailing list