shutil make_archive 导致嵌套的 .zip 文件 [重复]
Posted
技术标签:
【中文标题】shutil make_archive 导致嵌套的 .zip 文件 [重复]【英文标题】:shutil make_archive resulting in nested .zip files [duplicate] 【发布时间】:2017-10-25 22:29:07 【问题描述】:我一直在尝试使用来自shutil
库的make_archive
。
这里是代码(带有全面的 cmets):
from shutil import make_archive
make_archive(
'zipfile_name',
'zip', # archive format
root_dir=None, # current working dir if None
base_dir=None) # cwd if None
这是一个目录树的例子:
folder
│ script.py
└───subfolder1
│ │ file011.txt
│ │ file012.txt
│ │
└───subfolder2
│ │ file011.txt
│ │ file012.txt
│ │
...
如果我运行我的脚本(上面的代码),结果是:
folder
│ script.py
└───subfolder1
│ │ file011.txt
│ │ file012.txt
│ │
└───subfolder2
│ │ file011.txt
│ │ file012.txt
│ │
└───zipfile_name.zip
│ │ same content as above (like expected)
│ │ zipfile_name.zip
...
为什么要创建一个额外的zipfile_name.zip
?另外,请注意第二个存档无法打开,因为它无效。我知道以前是否没有人遇到过这个问题,但也许我的参数是错误的,这就是我问的原因。
【问题讨论】:
@ekhumoro 链接的副本不是比我的问题更新吗?为什么这个线程会被关闭而不是另一个? 您的问题在被问到另一个问题时没有任何答案,因此当时两者都不能被标记为重复。现在这两个问题之间没有太多选择,除了另一个有更多的活动(即 cmets)。这两个问题仍然有价值,所以重要的是将它们联系在一起,以便其他人更容易找到它们, 【参考方案1】:我也遇到过这个问题。这是解决问题的一个简单技巧:使用相对路径作为base_name
:
from shutil import make_archive
make_archive(
'../zipfile_name',
'zip', # archive format
root_dir=None, # current working dir if None
base_dir=None) # cwd if None
存档将在父目录中创建,不会干扰正在存档的目录。
【讨论】:
以上是关于shutil make_archive 导致嵌套的 .zip 文件 [重复]的主要内容,如果未能解决你的问题,请参考以下文章