Seite 1 von 1

shutil.unpack_archive tut nichts

Verfasst: Donnerstag 25. Juli 2019, 13:44
von Jankie
Bin gerade dabei ein Programm zu schreiben was Ordner zuerst packt und dann verschlüsselt. Natürlich soll dies auch anders herum gehen, also zu erst entschlüsseln und dann entpacken.
Das packen und verschlüsseln klappt super. Auch das entschlüsseln klappt, allerdings entpackt er den Ordner nicht wieder. Dachte das liegt an dem Code drum herum, darum hab ich mal nur die Zeile Code ausgelagert die für das entpacken wichtig ist, aber es passiert immer noch nichts. Es kommt auch keine Fehlermeldung.


Mein Code:

Code: Alles auswählen

import shutil

folder_to_unpack = input("Welcher Ordner soll entpackt werden?: ")
shutil.unpack_archive(folder_to_unpack, 'zip')

Re: shutil.unpack_archive tut nichts

Verfasst: Donnerstag 25. Juli 2019, 14:18
von __blackjack__
@Jankie: Also erst einmal ist die Formulierung welcher ”Ordner” entpackt werden soll komisch. Und dann ist die Frage warum Du das Zielverzeichnis 'zip' nennst, und ist da tatsächlich danach kein Verzeichnis mit dem Namen 'zip' und dem Inhalt des Archivs?

Re: shutil.unpack_archive tut nichts

Verfasst: Donnerstag 25. Juli 2019, 14:32
von Jankie
Also damit wollte ich eigentlich das format angeben, aber hab anscheinend die Parameterreihenfolge vertauscht. Allerdings sollte das ja nur ein optionaler Parameter sein und ohne den müsste es klappen und ins Verzeichnis kopieren indem die Python Datei liegt? Also mit:

Code: Alles auswählen

folder_to_unpack = input("Welcher Ordner soll entpackt werden?: ")
shutil.unpack_archive(folder_to_unpack)

tut sich auch nichts.

Re: shutil.unpack_archive tut nichts

Verfasst: Donnerstag 25. Juli 2019, 14:35
von Sirius3
@Jankie: es wird halt nicht in das Verzeichnis entpackt, wo die Python-Datei liegt, sondern ins aktuelle Arbeitsverzeichnis.
Hast Du da schon nachgeschaut?

Re: shutil.unpack_archive tut nichts

Verfasst: Donnerstag 25. Juli 2019, 14:42
von Jankie
Dort finde ich auch nichts. Auch wenn ich den Pfad wohin es entpackt werden soll explizit angebe tut sich nichts.

Code: Alles auswählen

import shutil

extract_dir = r"C:\Users\xxx\Desktop"
folder_to_unpack = input("Welcher Ordner soll entpackt werden?: ")
shutil.unpack_archive(folder_to_unpack, extract_dir)

Re: shutil.unpack_archive tut nichts

Verfasst: Freitag 26. Juli 2019, 08:38
von Jankie
Okay, habe den Fehler gefunden.

Ich habe einfach einen leeren Ordner gepackt und dann wieder entpackt. Beim entpacken werden aber direkt die Dateien im Ordner entpackt, nicht der Ordner an sich. Hat jemand eine Lösung wie ich nur den Ordner entpacken kann?


Also wenn ich einen Ordner habe Namens "Neuer Ordner" und mit einer Datei "Neues Textdokument.txt" und den dann mit shutil packe, wird "Neuer Ordner.zip" drauß und die Datei "Neues Textdokument.txt" liegt drin, beim entpacken möchte ich dann wieder nur "Neuer Ordner", nicht direkt "Neues Textdokument.txt" haben.

Re: shutil.unpack_archive tut nichts

Verfasst: Freitag 26. Juli 2019, 09:06
von sparrow
Dann schau dir beim Packen mal die Argumente "root_dir" und "base_dir" an.

Re: shutil.unpack_archive tut nichts

Verfasst: Freitag 26. Juli 2019, 10:01
von Jankie
Habs mir mal angeguckt aber so wirklich verstehen tue ich es leider nicht.

Re: shutil.unpack_archive tut nichts

Verfasst: Freitag 26. Juli 2019, 12:14
von sparrow
Du musst halt sichergehen, dass "Neuer Ordner" mit gepackt wird. Wenn dein base_dir Neuer Ordner ist, ist das ja deine Basis. Alles was _darin_ ist, wird gepackt, der Ordner selbst aber nicht.

Re: shutil.unpack_archive tut nichts

Verfasst: Freitag 26. Juli 2019, 12:25
von Jankie
Ahhhh danke, habe es jetzt hinbekommen mit

Code: Alles auswählen

shutil.make_archive(filename, 'zip', ".", filename)


#edit: Habe hier mal den kompletten Code gepostet, würde mich über Verbesserungsvorschläge freuen!