Python的zipfile模块创建多个同名文件

6

我有以下的Python代码:

>>> import zipfile
>>> zip = zipfile.ZipFile('abc.zip', 'w')
>>> zip.writestr('myfile', 'This is sample text')
>>> zip.writestr('myfile', 'This is sample text')
>>> zip.close()

这会创建一个包含两个完全相同名称和路径的文件的归档文件。

为什么呢?

enter image description here


1
如何将两个完全相同名称和路径的文件区分开来? - msvalkon
看起来当我尝试时,它会在存档中创建两个具有相同名称和路径的文件。问题中包含了重现所需的所有代码,因此我不理解“缺乏足够信息诊断问题”的关闭投票。 - user2357112
zip格式允许多个文件具有相同的名称。虽然我似乎找不到该功能的适当文档。如果有人找到了链接,我想检查一下这些信息。 - Depado
这是存档格式的一个有点烦人的特性。例如,Tar也允许这样做,实际上文件名并不用于识别文件。这就是为什么在从ZIP存档中读取时不能依赖文件名,而应该传递ZipInfo的原因。 - bereal
同样的,定义为“相同”的东西在某种程度上是操作系统 / 文件系统特定的。例如,在具有不区分大小写文件系统的 OS X 上,您可能会遇到 'file.json' 和 'File.json' 相互冲突的情况。别让我开始讲类似于 Windows 上的 'file.aux' 这样的事... - Cameron Kerr
1个回答

5

这是Zip和其他一些存档格式(如Tar),甚至可以通过Python API进行处理:

注意:open()read()extract()方法可以接受文件名或ZipInfo对象。当尝试读取包含重复名称成员的ZIP文件时,您会感激这一点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接