我一直在尝试使用zipfileshutil.make_archive模块来递归创建目录的zip文件。这两个模块都很好用-除了不将空目录添加到存档中。包含其他空目录的空目录也将被静默跳过。

我可以使用7Zip创建相同路径的文件,并保留空目录。因此,我知道在文件格式本身中这是可能的。我只是不知道如何在Python中执行此操作。有任何想法吗?谢谢!

最佳答案

有一个使用zipfile的示例:

import os, zipfile
from os.path import join
def zipfolder(foldername, filename, includeEmptyDIr=True):
    empty_dirs = []
    zip = zipfile.ZipFile(filename, 'w', zipfile.ZIP_DEFLATED)
    for root, dirs, files in os.walk(foldername):
        empty_dirs.extend([dir for dir in dirs if os.listdir(join(root, dir)) == []])
        for name in files:
            zip.write(join(root ,name))
        if includeEmptyDIr:
            for dir in empty_dirs:
                zif = zipfile.ZipInfo(join(root, dir) + "/")
                zip.writestr(zif, "")
        empty_dirs = []
    zip.close()

if __name__ == "__main__":
    zipfolder('test1/noname/', 'zip.zip')

关于python - 如何使用Python创建文件路径的zip文件,包括空目录?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11751822/

10-12 18:42