代码之家  ›  专栏  ›  技术社区  ›  geoJshaun

python:zipfile。ZipFile没有这样的文件或目录

  •  7
  • geoJshaun  · 技术社区  · 8 年前

    存在文件夹路径:

    P:\\2018\\Archive\\
    

    我想通过编程方式创建许多zipfiles,但我从test开始。我将此测试zip文件命名为“CO\u 007\u 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'
    

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

    这是文档:

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

    上面写着:

    “w”截断并 写入新文件

    文档页面上的示例:

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

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

    3 回复  |  直到 4 年前
        1
  •  4
  •   Dawson Young    5 年前

    我也遇到了类似的问题,来到这里寻找答案。由于这是热门歌曲,我将补充我的发现。

    @metatoaster提供的答案对我来说并不适用,当我遍历代码时,发现路径返回到isdir为true。

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

    希望这对其他人有所帮助!

        2
  •  3
  •   metatoaster    8 年前

    复制此文件的唯一方法是在尚不存在的目录中创建zipfile。确保的唯一方法(您不能信任文件管理器;验证的唯一方法是从程序本身内部进行检查)是将新zip文件的所需路径分配给变量(例如path),然后调用 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
    
        3
  •  1
  •   camilogutierrez    4 年前

    我也有同样的问题。 这条路很长 .我通过添加此 //?/C 在路径的开头

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

    推荐文章