【问题标题】:python: zipfile.ZipFile No such file or directorypython: zipfile.ZipFile 没有这样的文件或目录
【发布时间】:2018-05-09 23:22:14
【问题描述】:

有文件夹路径:

P:\\2018\\Archive\\

我想以编程方式创建许多 zipfile,但我从 test.json 开始。我将把这个测试压缩文件命名为“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:\2018\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 文件并向其添加文件夹?

【问题讨论】:

  • @metatoaster 我明白了。我尝试 -- path = "P:\\2018\\Archive\\" -- os.path.isdir(path) -- 它返回 false。而且有问题!同事在存档前将新文件夹添加到目录!不过还是有问题。更改了路径名并进行了检查。返回“True”但现在出现此错误:IOError: [Errno 22] invalid mode ('wb') or filename: ' P:\\2018\\Workspaces\\Archive\\CO_001_Model.zip'
  • P: 之前可能有一个空格,请检查以确保您的代码中没有这种情况。
  • @metatoaster 是的!再次正确。谢谢。我不知道这是否有资格作为答案,但如果您想发布一个,我会检查一下。

标签: python zipfile errno


【解决方案1】:

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

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

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

希望对其他人有所帮助!

【讨论】:

    【解决方案2】:

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

    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
    

    【讨论】:

      【解决方案3】:

      我有同样的问题。 这是一条漫长的道路。我通过在路径的开头添加这个//?/C 解决了

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

      【讨论】:

        猜你喜欢
        • 2019-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-17
        • 2021-06-24
        • 2015-11-19
        相关资源
        最近更新 更多