【问题标题】:Python zipfile module creates multiple files with same namePython zipfile 模块创建多个同名文件
【发布时间】: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”之类的东西......

标签: python zipfile


【解决方案1】:

Zip 和其他一些存档格式(如 Tar)允许这样做,甚至可以通过 Python API 解决:

注意:open()read()extract() 方法可以采用文件名或 ZipInfo 对象。当您尝试读取包含重名成员的 ZIP 文件时,您会意识到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多