zipfile-Modul zu langsam?
Verfasst: Donnerstag 17. September 2015, 00:58
Hallo Leute,
im nachfolgenden Quelltext stelle ich euch meine check_zipfile()-Funktion vor. Ich möchte eine *.zip-Datei auf Fehler überprüfen. Insgesamt funktioniert das Skript sowohl mit als auch ohne Passwort. Wenn die *.zip-Datei nicht passwortgeschützt ist, läuft die "Untersuchung" recht flott durch. Sobald die Zip-Datei aber passwortgeschützt ist, wird es kritisch. Die "Untersuchung" dauert wesentlich länger. Meine zip-Datei ist knapp 13 MB groß, und beinhaltet insgesamt 17 *.pdf-Dateien. Alle *.pdf-Dateien sind nicht größer als 1 MB, sie schwanken eher von 700 KB bis 900 KB. Mein Passowrt ist nur 7 Zeichen lang, bestehend aus Buchstaben und Zahlen. Die Gesamtdauer bei der "Untersuchung" mit Passwort beträgt 2 Minuten und 20 Sekunden. Nach dieser langen Wartezeit bekomme ich dann die entsprechende Print-Meldung, zum Beispiel ob die Datei beschädigt sei oder eben nicht.
Ich komme einfach nicht darauf, was diese Prozedur so dermaßen ausbremsen könnte. Hat jemand von euch eine Ahnung?
im nachfolgenden Quelltext stelle ich euch meine check_zipfile()-Funktion vor. Ich möchte eine *.zip-Datei auf Fehler überprüfen. Insgesamt funktioniert das Skript sowohl mit als auch ohne Passwort. Wenn die *.zip-Datei nicht passwortgeschützt ist, läuft die "Untersuchung" recht flott durch. Sobald die Zip-Datei aber passwortgeschützt ist, wird es kritisch. Die "Untersuchung" dauert wesentlich länger. Meine zip-Datei ist knapp 13 MB groß, und beinhaltet insgesamt 17 *.pdf-Dateien. Alle *.pdf-Dateien sind nicht größer als 1 MB, sie schwanken eher von 700 KB bis 900 KB. Mein Passowrt ist nur 7 Zeichen lang, bestehend aus Buchstaben und Zahlen. Die Gesamtdauer bei der "Untersuchung" mit Passwort beträgt 2 Minuten und 20 Sekunden. Nach dieser langen Wartezeit bekomme ich dann die entsprechende Print-Meldung, zum Beispiel ob die Datei beschädigt sei oder eben nicht.
Ich komme einfach nicht darauf, was diese Prozedur so dermaßen ausbremsen könnte. Hat jemand von euch eine Ahnung?
Code: Alles auswählen
def check_zipfile(zipfile_path, zip_pwd):
try:
with zipfile.ZipFile(zipfile_path, 'r') as f:
f.setpassword(zip_pwd)
try:
ret = f.testzip()
if ret is not None:
print "First bad file in zip: %s" % ret
else:
print "zip file is correct"
except RuntimeError as e:
print e
if 'encrypted' in str(e):
print 'This zip has encrypted files! Try again with a password!'
if 'Bad password' in str(e):
print "Bad password"
if 'password required' in str(e):
print "Password required"
except Exception as Ex:
print "Exception ", Ex
except zipfile.BadZipfile as bad_zip_file:
print "BAD", bad_zip_file
except RuntimeError as RuEr:
print "(RuntimeError)", RuEr
except Exception as ex_corrupt:
print "Exception", ex_corrupt