如何创建目录的zip压缩文件?
我该如何在Python中创建一个文件夹结构的压缩包?
30 个回答
89
要把mydirectory
里的所有内容,包括所有文件和子文件夹,添加到一个新的压缩文件里,可以使用以下命令:
import os
import zipfile
zf = zipfile.ZipFile("myzipfile.zip", "w")
for dirname, subdirs, files in os.walk("mydirectory"):
zf.write(dirname)
for filename in files:
zf.write(os.path.join(dirname, filename))
zf.close()
2151
最简单的方法是使用 shutil.make_archive
。这个方法可以创建 zip 和 tar 格式的压缩文件。
import shutil
shutil.make_archive(output_filename, 'zip', dir_name)
如果你需要做一些比简单压缩整个文件夹更复杂的事情,比如跳过某些文件,那你就需要深入了解一下 zipfile
模块,正如其他人所建议的那样。
718
正如其他人所提到的,你应该使用 zipfile 这个库。文档里告诉你有哪些功能可以用,但并没有详细解释怎么把整个文件夹压缩成一个zip文件。我觉得用一些示例代码来说明会更简单:
import os
import zipfile
def zipdir(path, ziph):
# ziph is zipfile handle
for root, dirs, files in os.walk(path):
for file in files:
ziph.write(os.path.join(root, file),
os.path.relpath(os.path.join(root, file),
os.path.join(path, '..')))
with zipfile.ZipFile('Python.zip', 'w', zipfile.ZIP_DEFLATED) as zipf:
zipdir('tmp/', zipf)