2017-02-02 2 views
0

Gibt es einen Weg in Python mit gzip oder einem anderen Modul, um die Integrität des gzip-Archivs zu überprüfen? GrundsätzlichPython prüft die Integrität des gzip-Archivs

ist es gleichwertig in Python zu dem, was folgendes tut:

gunzip -t my_archive.gz 

Antwort

1

Hoppla, erste Antwort (jetzt gelöscht) war Ergebnis der Untersuchung der Frage Verlesen.

Ich würde vorschlagen, mit dem gzip-Modul, um die Datei zu lesen und einfach wegwerfen, was Sie lesen. Sie müssen die gesamte Datei entschlüsseln, um ihre Integrität auf jeden Fall zu überprüfen. https://docs.python.org/2/library/gzip.html

So etwas wie (Ungeprüfte Code)

import gzip 
chunksize=10000000 # 10 Mbytes 

ok = True 
with gzip.open('file.txt.gz', 'rb') as f: 
    try: 
     while f.read(chunksize) != '': 
      pass 
    except: 
     ok = False 

Ich weiß nicht, welche Ausnahme eine beschädigte Zip-Datei liest, wird werfen, könnten Sie herausfinden möchten, und dann nur diese bestimmten fangen.

+0

Nachdem ich mich umgesehen habe, kam ich zu dem Schluss, dass dies die einzige vernünftige Methode ist, das Archiv in Python zu überprüfen, also werde ich deine Antwort akzeptieren, obwohl das im Allgemeinen etwas CPU verbraucht wollte vermeiden ... – wwn

0

Sie subprocess oder os-Modul zur Ausführung dieses Befehls und lesen Sie die Ausgabe verwenden können. so etwas wie dieses

Mit os Modul

import os 
output = os.popen('gunzip -t my_archive.gz').read() 

Mit Subprocess Modul

import subprocess 
proc = subprocess.Popen(["gunzip", "-t", "my_archive.gz"], stdout=subprocess.PIPE, shell=True) 
(out, err) = proc.communicate() 
+0

Der Punkt ist, ich möchte keinen externen Befehl verwenden. Ich würde dies gerne in reinem Python erreichen. – wwn