【问题标题】:zipfile is leaving the last few lines off my file - why?zipfile 将最后几行从我的文件中删除 - 为什么?
【发布时间】:2014-09-12 03:38:39
【问题描述】:

所以我在 Python 中使用 zipfile 模块时遇到了问题。目前,当我尝试压缩 KML 文件以创建新的 KMZ 文件时,我遗漏了最后几行。 KML 有多长似乎并不重要。我认为这是因为 zipfile 没有写入最后一个压缩块。

kmz = zipfile.ZipFile(kmzPath , 'w')
kmz.write(kmlPath, 'CORS.kml', zipfile.ZIP_DEFLATED)

是的,在你问我已经导入 zlib 来进行压缩之前。我也尝试在较低级别使用 zlib,但有同样的问题。我被困住了。

有什么想法吗?

【问题讨论】:

    标签: python kml python-2.6 zipfile kmz


    【解决方案1】:

    确保你打过电话

    kmz.close()
    

    .write(...) 命令之后,否则文件的全部内容将不会刷新到磁盘。为确保自动发生这种情况,请始终使用with 上下文管理器,因为退出循环时文件将关闭:

    with zipfile.ZipFile(kmzPath, 'w') as kmz:
        kmz.write(kmlPath, 'CORS.kml', zipfile.ZIP_DEFLATED)
    

    【讨论】:

    • 嘿,好吧。那行得通。我通常也使用 with 但得到一个 AttributeError: ZipFile instance has no attribute 'exit' 所以这就是它被遗漏的原因。因为我几乎从不使用 *.close() 我忘了。臭虫。谢谢!
    【解决方案2】:

    这只是一个猜测,但根据zipfile 文档:

    您必须在退出程序之前致电close(),否则将不会写入基本记录。

    你没有表明你实际上是在打电话给kmz.close()——这可能是问题所在吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-03
      • 1970-01-01
      • 2017-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-31
      • 2011-06-20
      相关资源
      最近更新 更多