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