Ich versuche, Dateien in einem Verzeichnis und seinen Unterverzeichnissen mit einem ausführbaren Dateikompressor (7-Zip) zu komprimieren. Ich habe eine Schleife eingerichtet, die den Prozess automatisiert, und der Code erzeugt keine Fehler. Es scheint jedoch nichts zu komprimieren. Was ich geschrieben habe, ist:Können Sie Popen verwenden und in Python in einer Schleife zusammenlaufen?
import subprocess, os
path = 'directory-path'
newpath = 'new-directory-path'
for dirpath, dirnames, files in os.walk(path):
for filename in files:
p = subprocess.Popen(['C:\\Program Files (x86)\\7-Zip\\7z.exe', 'a', '-mx1', 'blahblah', filename], cwd = newpath)
p.wait()
Es tut Ausgabe eine Datei blahblah.dat
im newpath
Verzeichnis, aber 1 KB-Datei und sollte ein paar GB sein. Wenn ich die Dateipfade außerhalb einer Schleife fest einprogrammiere, funktioniert das natürlich gut. Was mache ich hier falsch?
Sie übergeben den Dateinamen zu komprimieren, aber nichts darüber, wo diese Datei zu finden ist. Kann man nicht auch einfach [7zip das Verzeichnis traversal selbst behandeln] (https://sevenzip.osdn.jp/chm/cmdline/commands/add.htm)? – user2357112
@ user2357112 Danke für die Antwort! 7zip kann das von der Kommandozeile aus tun. Ich versuche nur, ein Skript zu schreiben, das dasselbe tun kann. Ist der os.walk (Pfad) nicht in den Pfad des Pfades verschoben worden? – Lou