1

我正在编写一个函数,它需要一组文件,然后:

  • 将文件保存到 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)
4

0 回答 0