Når du komprimerer en hel mappe (folder) til en zip-fil i Python, kan du bruge os.scandir() eller os.listdir() til at oprette en liste over filer og bruge zipfile-modulet til at komprimere dem, men det er nemmere at bruge make_archive () i shutil-modulet er nemmere.
Ud over zip understøttes også andre formater som tar.
Du kan finde flere oplysninger om komprimering og udpakning af zip-filer ved hjælp af zipfile-modulet i følgende artikel.
- Relaterede artikler:zipfile til at komprimere og udpakke ZIP-filer i Python
Komprimere en mappe til en zip-fil:shutil.make_archive()
Det første argument, base_name, angiver navnet på den zip-fil, der skal oprettes (uden udvidelse), og det andet argument, format, angiver arkivformatet.
Følgende kan vælges som argumentformat.
'zip'
'tar'
'gztar'
'bztar'
'xztar'
Det tredje argument, root_dir, angiver stien til rodmappen for den mappe, der skal komprimeres, og det fjerde argument, base_dir, angiver stien til den mappe, der skal komprimeres i forhold til root_dir. Begge er som standard sat til den aktuelle mappe.
Hvis base_dir udelades, vil hele root_dir blive komprimeret.
data/temp
Lad os f.eks. antage, at vi har en mappe med følgende struktur.
dir ├── dir_sub │ └── test_sub.txt └── test.txt
import shutil shutil.make_archive('data/temp/new_shutil', 'zip', root_dir='data/temp/dir')
New_shutil.zip komprimeret med ovenstående indstillinger uden base_dir vil blive dekomprimeret på følgende måde.
new_shutil ├── dir_sub │ └── test_sub.txt └── test.txt
Hvis mappen i root_dir er angivet som base_dir, vil følgende blive vist.
shutil.make_archive('data/temp/new_shutil_sub', 'zip', root_dir='data/temp/dir', base_dir='dir_sub')
New_shutil_sub.zip, der er komprimeret med ovenstående indstillinger, vil blive dekomprimeret på følgende måde.
dir_sub
└── test_sub.txt