在 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