在 Python 中將目錄(文件夾)壓縮為 zip 或 tar

商業

在 Python 中將整個目錄(文件夾)壓縮成 zip 文件時,可以使用 os.scandir() 或 os.listdir() 創建文件列表並使用 zipfile 模塊進行壓縮,但使用起來更方便shutil 模塊的 make_archive() 比較簡單。

除了 zip 之外,還支持 tar 等其他格式。

有關使用 zipfile 模塊壓縮和解壓縮 zip 文件的更多信息,請參閱以下文章。

將目錄(文件夾)壓縮成 zip 文件:shutil.make_archive()

第一個參數 base_name 指定要創建的 zip 文件的名稱(不帶擴展名),第二個參數 format 指定存檔格式。

可以選擇以下參數格式。

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

第三個參數root_dir指定要壓縮的目錄的根目錄的路徑,第四個參數base_dir指定要壓縮的目錄相對於root_dir的路徑。默認情況下,兩者都設置為當前目錄。

如果省略 base_dir,則將壓縮整個 root_dir。

data/temp
例如,假設我們有一個具有以下結構的目錄。

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 省略 base_dir 將按如下方式解壓。

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

然後,如果為 base_dir 指定 root_dir 中的目錄,將顯示以下內容。

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

使用上述設置壓縮的new_shutil_sub.zip將解壓如下。

dir_sub
└── test_sub.txt
Copied title and URL