shutil make_archive导致嵌套的.zip文件

时间:2017-10-25 22:29:08

标签: python python-3.x zip shutil

我一直在尝试使用shutil库中的make_archive

以下是代码(含有全面的评论):

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?另请注意,第二个存档无法打开,因为它无效。我知道如果以前没有人遇到过这个问题,但也许我的参数错了,这就是我要问的原因。

1 个答案:

答案 0 :(得分:0)

我也遇到了这个问题。这是解决此问题的简单技巧:使用相对路径作为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 

归档文件将在父目录中创建,而不会干扰正在归档的目录。