我有一个包含多个文件的目录。我想使用其中一些文件创建档案(例如,仅名称在某些数组中列出的文件) 那是我的代码:
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...
代码),则可以毫无问题地打开存档。
答案 0 :(得分:0)
似乎创建一个空的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")