使用shutil.make_archive('newarchive', 'zip', <directory>)
在Python 3.5中创建ZIP存档在Windows上的行为不符合预期。
在Linux上它运行正常,directory
内的所有文件和文件夹都归档并在zip文件中可见。但是,在Windows上会创建一个额外的文件夹 - 点文件夹.
。见截图:
文件夹本身是空的,但我想完全摆脱它(另一个过程对结构非常严格)。解决方法是不使用make_archive()
并手动创建ZipFile
,但我觉得该功能应该首先起作用。
这是一个错误还是我错过了什么?
编辑:7Zip以及Total Commander中都存在点文件。 这是我最短的工作片段(Python 3.5.1,Windows 10):
import shutil
import os
os.chdir('C:/Users/melka/Downloads')
shutil.make_archive('testing', 'zip', 'zip_test')
这会从C:\Users\melka\Downloads\zip_test
的内容创建一个新的ZIP,最终成为:
但是,使用此代码手动创建zip不会创建点文件:
import os
import zipfile
def make_zip(zip_name, path):
zip_handle = zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED)
os.chdir(path)
for root, dirs, files in os.walk('.'):
for file in files:
zip_handle.write(os.path.join(root, file))
os.chdir('C:/Users/melka/Downloads')
make_zip('anotherzip.zip', 'zip_test')
答案 0 :(得分:2)
This "bug" has been fixed in October 2016 : https://github.com/python/cpython/commit/666de7772708047b63125126b0147931571254a4
Apparently, you need to update to either Python 3.5.3 or 3.6.