我正在编写一个函数,它需要一组文件,然后:
- 将文件保存到 zip 文件(如果存在)。
- 或从所述 zip 文件中提取文件(如果它们不存在)。
将文件保存到 zip 可以正常工作,但是当从我的 zip 中提取文件时,zip 被清空,但没有文件保存到我指定 extractall 指向的路径。控制台中不会出现任何错误。
有谁知道我能做些什么来解决这个问题?我尝试在except
子句之后手动关闭 zip 文件,以防导致第一个文件with
无法正确卸载,但这似乎没有解决任何问题。
代码:
from zipfile import ZipFile
files = ['Combine1.docm', 'Combine2.docm', 'Combine3.docm',
'Combine4.docm', 'Combine5.docm', 'FinalMaster.docm',
'FinalMasterBeltDrier.docm', 'FinalMasterExport.docm']
backupZip = 'WorkaroundBackup.zip'
def ZipSave(files, backupZip):
#backs up files to zip if present, restores from backup zip if not present
try:
with ZipFile(backupZip, 'w') as zipWrite:
for file in files:
zipWrite.write(file, compress_type=None)
print('Files backed up to %s.' %(backupZip))
return
except FileNotFoundError: #catches files not present case
with ZipFile(backupZip, 'r') as zipRead:
zipRead.extractall(path = 'F:\DW Master\Template Docs Workaround')
print('Files not found; restoring from %s.' %(backupZip))
return
ZipSave(files, backupZip)