Python zipfile 模块创建多个同名文件
Posted
技术标签:
【中文标题】Python zipfile 模块创建多个同名文件【英文标题】:Python zipfile module creates multiple files with same name 【发布时间】:2014-03-03 10:14:32 【问题描述】:我在 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()
这将创建一个包含两个具有完全相同名称和路径的文件的存档。
这是为什么?
【问题讨论】:
你怎么能有两个文件,名称和路径完全相同? 当我尝试它时,看起来它也会在存档中创建两个具有相同名称和路径的文件。有在问题中正确重现它所需的所有代码,所以我不明白“缺乏足够的信息来诊断问题”关闭投票。 zip 格式允许多个文件同名。尽管我似乎找不到该功能的适当文档。如果有人找到链接,我想检查该信息。 这是归档格式的一个有点烦人的特性。例如,Tar 也允许这样做,文件名实际上不用于标识文件。这就是为什么在从 zip 存档中读取文件时不能依赖文件名,而应该传递ZipInfo
。
以类似的方式,定义为“相同”的内容在某种程度上是特定于操作系统/文件系统的。例如。你可以让'file.json'和'File.json'最终在OS X上与不区分大小写的文件系统发生冲突。不要让我开始使用 Windows 上的“file.aux”之类的东西......
【参考方案1】:
Zip 和其他一些存档格式(如 Tar)允许这样做,甚至可以通过 Python API 解决:
注意:
open()
、read()
和extract()
方法可以采用文件名或ZipInfo
对象。当您尝试读取包含重名成员的 ZIP 文件时,您会意识到这一点。
【讨论】:
以上是关于Python zipfile 模块创建多个同名文件的主要内容,如果未能解决你的问题,请参考以下文章
Python:如何创建一个 zipfile 并将其写入多个目录/文件夹?