代码之家  ›  专栏  ›  技术社区  ›  Julia Aleksandrova

无法用python压缩.zip(不允许操作)

  •  0
  • Julia Aleksandrova  · 技术社区  · 7 年前

    我有一个目录,里面有几个文件。我想用这些文件中的一些创建一个存档(例如,只有名字列在某个数组中的文件) 这是我的密码:

    import zipfile
    import os
    
    def zip_files(report_dir):
        zipf = zipfile.ZipFile('report.zip', 'w', zipfile.ZIP_STORED)
        rep = ['1', '2', 'new']
        print('RRREP ', rep)
        for root, dirs, files in os.walk(report_dir):
            for file in files:
                title = file.title().split('_')[0]
                if title in rep:
                    zipf.write(os.path.join(root, file))
    
        zipf.close()
    
    
    zip_files('')
    

    当我尝试扩展结果存档时,我收到一条消息

    无法展开“report.zip”(错误1-不允许操作)

    如果我从目录中添加所有文件(=如果我删除 if... -代码),可以毫无问题地打开存档。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Jean-François Fabre    7 年前

    似乎创建一个空的zip文件会给一些外部存档程序带来一些问题。

    您的筛选器与任何内容都不匹配。将来,您可以使用一个标志保护您的存档创建,如果没有匹配的内容,则报告错误:

    at_least_one_match = False
    
    for root, dirs, files in os.walk(report_dir):
        for file in files:
            title = file.title().split('_')[0]
            if title in rep:
                at_least_one_match = True
                zipf.write(os.path.join(root, file))
    
    
    if not at_least_one_match:
        raise Exception("No files were added. Archive is empty/corrupt")