在Python中把整个目录(文件夹)压缩成一个zip文件时,可以使用os.scandir()或os.listdir()来创建一个文件列表,并使用zipfile模块来压缩它们,但是使用shutil模块的make_archive()更容易。
除了zip之外,也支持其他格式,如tar。
关于使用zipfile模块压缩和解压缩zip文件的更多信息,请参考以下文章。
将一个目录(文件夹)压缩成一个压缩文件:shutil.make_archive()
第一个参数,base_name,指定要创建的压缩文件的名称(不带扩展名),第二个参数,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')
用上述设置省略base_dir压缩的new_shutil.zip将被解压,如下所示。
new_shutil ├── dir_sub │ └── test_sub.txt └── test.txt
然后,如果root_dir中的目录被指定为base_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