Quan comprimiu un directori (carpeta) sencer en un fitxer zip a Python, podeu utilitzar os.scandir() o os.listdir() per crear una llista de fitxers i utilitzar el mòdul zipfile per comprimir-los, però és més fàcil d’utilitzar. el make_archive () del mòdul Shuil és més fàcil.
A més del zip, també s’admeten altres formats com ara tar.
Per obtenir més informació sobre com comprimir i descomprimir fitxers zip mitjançant el mòdul zipfile, consulteu l’article següent.
- Articles relacionats:zipfile per comprimir i descomprimir fitxers ZIP a Python
Comprimiu un directori (carpeta) en un fitxer zip:shutil.make_archive()
El primer argument, nom_base, especifica el nom del fitxer zip que s’ha de crear (sense extensió), i el segon argument, format, especifica el format de l’arxiu.
Es pot seleccionar el següent per al format d’argument.
zip'
tar'
gztar'
bztar'
xztar'
El tercer argument, director_arrel, especifica la ruta del directori arrel del directori a comprimir, i el quart argument, dir_base, especifica la ruta del directori que s’ha de comprimir en relació amb el directori_arrel. Tots dos estan configurats al directori actual per defecte.
Si s’omet base_dir, es comprimirà tot el root_dir.
data/temp
Per exemple, suposem que tenim un directori amb l’estructura següent.
dir ├── dir_sub │ └── test_sub.txt └── test.txt
import shutil shutil.make_archive('data/temp/new_shutil', 'zip', root_dir='data/temp/dir')
El new_shutil.zip comprimit amb la configuració anterior que omet el base_dir es descomprimirà de la següent manera.
new_shutil ├── dir_sub │ └── test_sub.txt └── test.txt
Aleshores, si s’especifica el directori a root_dir per a base_dir, es mostrarà el següent.
shutil.make_archive('data/temp/new_shutil_sub', 'zip', root_dir='data/temp/dir', base_dir='dir_sub')
El new_shutil_sub.zip comprimit amb la configuració anterior es descomprimirà de la següent manera.
dir_sub
└── test_sub.txt