我有一个使用以下代码压缩目录的脚本:
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
答案 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)