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
