Python的shutil.make_archive()在Windows上创建了dot目录

Mar*_*lka 10 python windows zip

使用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')
Run Code Online (Sandbox Code Playgroud)

这将从内容创建一个新的ZIP C:\Users\melka\Downloads\zip_test,最终成为: 在此输入图像描述

但是,使用此代码手动创建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')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

luc*_*asg 3

这个“bug”已于2016年10月修复:https://github.com/python/cpython/commit/666de7772708047b63125126b0147931571254a4

这里是差异: 在此输入图像描述

显然,您需要更新到 Python 3.5.3 或 3.6。