Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python-更新zip存档时文件重复_Python_Excel_Zip_Zipfile - Fatal编程技术网

python-更新zip存档时文件重复

python-更新zip存档时文件重复,python,excel,zip,zipfile,Python,Excel,Zip,Zipfile,我正在尝试更新zip存档中的文件并将其另存为新存档。我使用的zip归档文件是一个excel.xlsm文件,我需要修改的文件位于子文件夹中:xl/vbaProject.bin。我编写了一个函数(通过修改此处发布的函数:) 当我这样调用此函数时: updateZip2('Book1.xlsm',r'xl\vbaProject.bin',target2) 新的Book1\u new.xlsm按预期创建,但我收到警告: C:\ProgramData\Anaconda3\lib\zipfile.py:13

我正在尝试更新zip存档中的文件并将其另存为新存档。我使用的zip归档文件是一个excel
.xlsm
文件,我需要修改的文件位于子文件夹中:
xl/vbaProject.bin
。我编写了一个函数(通过修改此处发布的函数:)

当我这样调用此函数时:
updateZip2('Book1.xlsm',r'xl\vbaProject.bin',target2)
新的
Book1\u new.xlsm
按预期创建,但我收到警告:

C:\ProgramData\Anaconda3\lib\zipfile.py:1355: UserWarning: Duplicate name: 'xl/vbaProject.bin'
  return self._open_to_write(zinfo, force_zip64=force_zip64)

当我用WinZip打开文件时,我可以看到vbaProject.bin是重复的。关于为什么以及如何纠正此行为以复制zip中的所有文件,除了从
xl\vbaProject.bin

传递到
updateZip2()
文件之外,您有何想法

r'xl\vbaProject.bin'
但存储在ZIP中的文件的格式如下:

r'xl/vbaProject.bin'
因此,如果您在通话中将
\
更改为
/
,它应该可以工作:

updateZip2('Book1.xlsm', r'xl/vbaProject.bin', target2)
或者,您可以将平等性测试更新为:

if os.path.normpath(item.filename) != os.path.normpath(file):
if os.path.normpath(item.filename) != os.path.normpath(file):