我创建了一个脚本,将用户指定的文件夹备份到用户指定的位置作为zip文件,我可以运行一次脚本,但如果我再次运行脚本并使用相同的参数作为zip文件名我收到以下错误。
Attempt to write to ZIP archive that was already closed
下面的Zip文件代码:
bkZip = zipfile.ZipFile(backZip, 'w') # Not sure what to say for lines 26 - 31
for dirname, subdirs, files in os.walk(backUp):
bkZip.write(dirname)
for filename in files:
bkZip.write(os.path.join(dirname, filename))
bkZip.close()
我不完全确定如何解决此问题并需要一些帮助。
答案 0 :(得分:1)
取决于你想要发生什么。
您可以检查目标文件名是否已存在,然后更改名称(例如my_zip_file.zip.old)或删除它:
^.*_en(\.|$)(?!.*_[a-z]{2}(\.|$)).*$
或者您可以打印警告并要求用户删除现有存档或中止。
或者,如果您打算附加到存档,则可以:
答案 1 :(得分:1)
试试这个:
for dirname, subdirs, files in os.walk(backUp):
bkZip.write(dirname)
for filename in files:
bkZip.write(os.path.join(dirname, filename))
bkZip.close()