Beim Komprimieren eines ganzen Verzeichnisses (Ordners) in eine Zip-Datei in Python, können Sie os.scandir() oder os.listdir() verwenden, um eine Liste von Dateien zu erstellen und das zipfile-Modul zu verwenden, um sie zu komprimieren, aber es ist einfacher, die make_archive () des shutil-Moduls zu verwenden ist einfacher.
Neben zip werden auch andere Formate wie tar unterstützt.
Weitere Informationen zum Komprimieren und Dekomprimieren von Zip-Dateien mit dem zipfile-Modul finden Sie in dem folgenden Artikel.
- Verwandte Artikel:zipfile zum Komprimieren und Dekomprimieren von ZIP-Dateien in Python
Komprimieren eines Verzeichnisses (Ordners) in eine Zip-Datei:shutil.make_archive()
Das erste Argument, base_name, gibt den Namen der zu erstellenden Zip-Datei an (ohne Erweiterung), und das zweite Argument, format, gibt das Archivformat an.
Für das Argumentenformat kann Folgendes ausgewählt werden.
'zip'
'tar'
'gztar'
'bztar'
'xztar'
Das dritte Argument, root_dir, gibt den Pfad des Stammverzeichnisses des zu komprimierenden Verzeichnisses an, und das vierte Argument, base_dir, gibt den Pfad des zu komprimierenden Verzeichnisses relativ zu root_dir an. Beide werden standardmäßig auf das aktuelle Verzeichnis gesetzt.
Wenn base_dir weggelassen wird, wird das gesamte root_dir komprimiert.
data/temp
Nehmen wir zum Beispiel an, wir haben ein Verzeichnis mit der folgenden Struktur.
dir ├── dir_sub │ └── test_sub.txt └── test.txt
import shutil shutil.make_archive('data/temp/new_shutil', 'zip', root_dir='data/temp/dir')
Die mit den obigen Einstellungen komprimierte Datei new_shutil.zip, bei der das base_dir weggelassen wurde, wird wie folgt dekomprimiert.
new_shutil ├── dir_sub │ └── test_sub.txt └── test.txt
Wenn dann das Verzeichnis in root_dir für base_dir angegeben wird, wird Folgendes angezeigt.
shutil.make_archive('data/temp/new_shutil_sub', 'zip', root_dir='data/temp/dir', base_dir='dir_sub')
Die mit den obigen Einstellungen komprimierte Datei new_shutil_sub.zip wird wie folgt dekomprimiert.
dir_sub
└── test_sub.txt