gpt4 book ai didi

Python shutil.make_archive() 在 Windows 上创建点目录

转载 作者:太空狗 更新时间:2023-10-29 19:28:32 30 4
gpt4 key购买 nike

使用 shutil.make_archive('newarchive', 'zip', <directory>)在 Python 3.5 中创建 ZIP 存档在 Windows 上的行为不符合预期。

在 Linux 上它工作正常,所有文件和文件夹都在 directory 中已存档并在 zip 文件中可见。但是,在 Windows 上会创建一个额外的文件夹 - 点文件夹 . .看截图:

enter image description here

文件夹本身是空的,但我想完全摆脱它(另一个过程对结构非常严格)。解决方法是不使用 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 ,最终是: enter image description here

但是,使用此代码手动创建 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')

enter image description here

最佳答案

此“错误”已于 2016 年 10 月修复:https://github.com/python/cpython/commit/666de7772708047b63125126b0147931571254a4

这里是差异: enter image description here

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

关于Python shutil.make_archive() 在 Windows 上创建点目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40792006/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com