python: zipfile.ZipFile 没有那个文件或目录

python: zipfile.ZipFile No such file or directory

有文件夹路径:

P:\2018\Archive\

我想以编程方式创建许多 zip 文件,但我从测试开始。我将把这个测试 zip 文件命名为 "CO_007_II.zip" 并尝试在上面的位置创建:

import zipfile as zp

with zp.ZipFile("P:\2018\Archive\CO_007_II.zip",'w') as myzip:
    myzip.write(r"P:18\CO_007_II")

但是我得到错误!

...

Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
  File "C:\Python27\ArcGIS10.2\lib\zipfile.py", line 752, in __init__
    self.fp = open(file, modeDict[mode])
IOError: [Errno 2] No such file or directory: 'P:\2018\Archive\CO_007_II.zip'

这不是创建新压缩文件的方法吗?我知道文件不存在。就是为什么我用的是'w'模式,不是吗?

这是文档:

https://docs.python.org/3/library/zipfile.html

它说:

'w' 截断并 写入新文件

文档页面上的示例:

with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')

两天前代码可以创建新的 zip 文件,但没有添加文件夹。今天什么都没用!为什么不?所有路径均有效。如何使用 python 创建新的 zip 文件并向其添加文件夹?

唯一可以重现的方法是在一个尚不存在的目录中创建一个 zip 文件。唯一可以确定的方法(您不能信任文件管理器;唯一的验证方法是从程序本身内部进行检查)是将新 zip 文件的所需路径分配给变量(例如路径),然后调用 isdir(dirname(path))。例如:

from os.path import isdir
from os.path import dirname

target = "P:\2018\Archive\CO_007_II.zip"
if not isdir(dirname(target)):
    print('cannot create zipfile because target does not exists')
else:
    # create the zipfile

我也遇到了类似的问题,来这里找答案。由于这是最热门的,我将添加我发现的内容。

@metatoaster 提供的答案对我不起作用,在单步执行代码时我发现路径返回 true 到 isdir。

在我的例子中,路径长度超过了 Windows 最大路径长度(260 个字符),这导致它失败,尽管文件夹路径有效。

希望对其他人有所帮助!

我遇到了同样的问题。 这条路很长。我通过在路径

的开头添加这个 //?/C 来解决

path = r"//?/C:\Users\Camilo\Proyectos"