为啥 Python zipfile 模块在 zip 文件中创建完整路径
Posted
技术标签:
【中文标题】为啥 Python zipfile 模块在 zip 文件中创建完整路径【英文标题】:Why Python zipfile module creates full path inside the zip file为什么 Python zipfile 模块在 zip 文件中创建完整路径 【发布时间】:2020-06-29 21:24:24 【问题描述】:我需要将给定目录(在 test1 内)中的所有文件压缩到一个 zip 文件中。
我的代码是
import zipfile
zipf = zipfile.ZipFile('/media/test/test1/'+'my_zip.zip', 'w', zipfile.ZIP_DEFLATED)
#Here I mentioned the path for specifying where the zip file should created
path='/media/test/test1/'
for root, dirs, files in os.walk(path):
for file in files:
if not str(file).endswith('.zip'):
zipf.write(os.path.join(root, file))
zipf.close()
这给出了 my_zip.zip
的输出当我打开它时,它包含每个子文件夹,例如 media>test>test1>test 1 中的文件
但我不想要这个媒体>test>test1。如何实现?
提前致谢。
【问题讨论】:
我认为您可以通过将arcname=file
参数指定为.write()
来解决此问题。
【参考方案1】:
如果您没有传递应该在存档中使用的名称,则 zipfile
使用传递给 write()
的路径
试试这个:
zipf.write(os.path.join(root, file),
arcname=os.path.join(root.replace(path, '', 1), file))
【讨论】:
你的意思是第二行应该是这样的? zipf = zipfile.ZipFile() @Vanjith 否。使用我提供的行代替您第八行上的zipf.write(...)
。以上是关于为啥 Python zipfile 模块在 zip 文件中创建完整路径的主要内容,如果未能解决你的问题,请参考以下文章
python用zipfile模块打包文件或是目录解压zip文件实例