42 Stimmen

Wie kann man feststellen, ob eine Datei gzip-komprimiert ist?

Ich habe ein Python-Programm, das Textdateien als Eingabe verwenden soll. Einige dieser Dateien können jedoch gzip-komprimiert sein.

Gibt es eine plattformübergreifende, verwendbare von Python Weg zu bestimmen, ob eine Datei gzip komprimiert ist oder nicht?

Ist das Folgende zuverlässig, oder könnte eine gewöhnliche Textdatei "zufällig" so gzip-ähnlich aussehen, dass ich falsch positive Ergebnisse erhalte?

try:
    gzip.GzipFile(filename, 'r')
    # compressed
    # ...
except:
    # not compressed
    # ...

2 Stimmen

Nur ein kleiner Hinweis: Verlassen Sie sich niemals auf die Dateiendung. Wie man das macht, steht in Hops Antwort.

0 Stimmen

@Helper: Ich bin mir nicht sicher (siehe mein Edit). Sie müssten immer noch mit einem möglichen IOError umgehen, aber gzipped Dateien ohne das Suffix sind meiner Meinung nach kaputt schwere Entscheidung :)

0voto

ewr2san Punkte 89

Scheint in Python3 nicht gut zu funktionieren...

import mimetypes
filename = "./datasets/test"

def file_type(filename):
    type = mimetypes.guess_type(filename)
    return type
print(file_type(filename))
liefert (Keine, Keine) Aber von dem Unix-Befehl "File"

~> Datei datasets/test datasets/test: gzip-komprimierte Daten, war "iostat_collection", von Unix, zuletzt geändert: Thu Jan 29 07:09:34 2015

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X