压缩目录,以便在upacked时返回acutal目录

时间:2015-08-28 18:35:22

标签: python directory zip

我有一个使用以下代码压缩目录的脚本:

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),arcname=file)
zip = zipfile.ZipFile('/path/to/directory.zip','w')
zipdir('/path/to/directory/',zip)

当我解压缩时,我最终得到目录的内容而不是包含文件的原始目录。我应该如何更改这个以便解压缩返回原始目录,文件仍然在里面?

ie。)解压缩 - > /解压缩/位置/目录/ file_from_directory

而不是

解压缩 - > /解压缩/位置/ file_from_directory

1 个答案:

答案 0 :(得分:1)

您使用file作为arcname,但您希望文件加上路径中最深的目录:

        for file in files:
            deepest_dir = os.path.split(root)[-1]
            fname = os.path.join(deepest_dir, file)
            ziph.write(os.path.join(root, file), arcname=fname)