@sirdistschonweg: Vieles funktioniert nicht ist eine sehr schwammige Fehlerbeschreibung. Es wäre praktischer zum Antworten wenn Du da genauer werden würdest. Ist der `SyntaxError` wegen der kaputten Einrückung? Oder das es kein kein Verzeichnis "c:\tempp" gibt und `os.chdir()` deswegen einen `FileNotFoundError` auslöst, oder…
Prellt bei Deiner Tastatur das "p"? Wegen tempp und `zipps`. Würde man beides nur mit einem P schreiben. Oder hast Du extra ein C:\TEMPP Verzeichnis angelegt das jetzt neben dem C:\TEMP vom Betriebssystem existiert?
Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassen (PascalCase).
Der Namenszusatz `obj` macht in Python keinen Sinn weil der nichts aussagt. *Alles* was man an einen Namen binden kann, ist ein Objekt in Python. Also kann/müsste man auch an jeden Namen `_obj` dran hängen. Es hat nur keinerlei Informationsgehalt für den Leser. Das `zipObj` beziehungsweise `zip_obj` sollte eher `zip_file` heissen. `zip` wäre ungünstig, weil man damit dann die gleichnamige eingebaute Funktion verdecken würde.
Statt `os` und `glob` würde man in neuem Code auch eher das `pathlib`-Modul und `Path`-Objekte verwenden.
Das würde dann also eher so aussehen (ungetestet):
Code: Alles auswählen
#!/usr/bin/env python3
from pathlib import Path
from zipfile import ZipFile
TEMP_PATH = Path(R"C:\tempp")
def main():
for start_number in range(0, 2022):
print(start_number)
zip_file_paths = TEMP_PATH.glob("*.zip")
print(zip_file_paths)
with ZipFile(zip_file_paths) as zip_file:
zip_file.extractall(TEMP_PATH)
if __name__ == "__main__":
main()
Die Schleife habe ich mal geraten. Die muss vielleicht anders aussehen.
Es gibt da ein potentielles Problem beim entpacken einer ZIP-Datei in das Verzeichnis in dem die ZIP-Datei liegt: Die könnte eine Datei enthalten die genau so heisst wie sie selbst!
Falls das eine Hausaufgabe ist: es gibt in jüngerer Vergangenheit mindestens zwei sehr ähnliche Fragen hier im Forum. Da wurde aber nicht direkt auf Platte entpackt und dann nach etwas gesucht, sondern *im* ZIP nach weiteren ZIP-Dateien gesucht, und die im Speicher entpackt. Stichwort `io.BytesIO`. Das würde beispielsweise das Problem mit dem gleichen Namen im ZIP umgehen.
Wobei ein eigenes temporäres Verzeichnis auch Sinn machen würde, denn C:\TEMP wird ja auch von anderen Programmen verwendet, die auch ZIP-Dateien dort ablegen könnten. Das Verzeichnis würde man aber *im* TEMP-Verzeichnis anlegen und nicht auf Laufwerk C: auf oberster Ebene. Da hätte man eventuell noch nicht mal Rechte das zu tun, wenn der Prozess als einfacher Benutzer läuft. Und auch C:\TEMP hart kodieren kann problematisch sein, weil man das umkonfigurieren kann. Und es ist dann natürlich auch noch vom Betriebssystem abhängig.