shutil make_archive, приводящий к вложенным файлам.zip
Я пытался использовать make_archive
от shutil
библиотека.
Вот код (с подробными комментариями):
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 ответ
Я также столкнулся с этой проблемой. Вот простой прием для решения проблемы: используйте относительный путь в качестве 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
Архив будет создан в родительском каталоге, не мешая архивируемому каталогу.