Comprimarea unui director (folder) într-un zip sau tar în Python

Afaceri

Atunci când comprimați un întreg director (folder) într-un fișier zip în Python, puteți utiliza os.scandir() sau os.listdir() pentru a crea o listă de fișiere și a utiliza modulul zipfile pentru a le comprima, dar este mai ușor să utilizați make_archive () din modulul shutil este mai ușor.

În plus față de zip, sunt acceptate și alte formate, cum ar fi tar.

Pentru mai multe informații despre comprimarea și decomprimarea fișierelor zip folosind modulul zipfile, vă rugăm să consultați următorul articol.

Comprimarea unui director (folder) într-un fișier zip:shutil.make_archive()

Primul argument, base_name, specifică numele fișierului zip care urmează să fie creat (fără extensie), iar al doilea argument, format, specifică formatul arhivei.

Pentru formatul argumentului se pot selecta următoarele variante.

  • 'zip'
  • 'tar'
  • 'gztar'
  • 'bztar'
  • 'xztar'

Al treilea argument, root_dir, specifică calea directorului rădăcină al directorului care urmează să fie comprimat, iar al patrulea argument, base_dir, specifică calea directorului care urmează să fie comprimat în raport cu root_dir. În mod implicit, ambele sunt setate la directorul curent.

Dacă base_dir este omis, întregul root_dir va fi comprimat.

data/temp
De exemplu, să presupunem că avem un director cu următoarea structură.

dir
├── dir_sub
   └── test_sub.txt
└── test.txt
import shutil

shutil.make_archive('data/temp/new_shutil', 'zip', root_dir='data/temp/dir')

Noul_shutil.zip comprimat cu setările de mai sus, omițând base_dir, va fi decomprimat după cum urmează.

new_shutil
├── dir_sub
   └── test_sub.txt
└── test.txt

Apoi, dacă directorul din root_dir este specificat pentru base_dir, se vor afișa următoarele.

shutil.make_archive('data/temp/new_shutil_sub', 'zip', root_dir='data/temp/dir', base_dir='dir_sub')

Noul_shutil_sub.zip comprimat cu setările de mai sus va fi decomprimat după cum urmează.

dir_sub
└── test_sub.txt