zipfile 将最后几行从我的文件中删除 - 为啥?
Posted
技术标签:
【中文标题】zipfile 将最后几行从我的文件中删除 - 为啥?【英文标题】: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,但有同样的问题。我被困住了。
有什么想法吗?
【问题讨论】:
【参考方案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()
——这可能是问题所在吗?
【讨论】:
以上是关于zipfile 将最后几行从我的文件中删除 - 为啥?的主要内容,如果未能解决你的问题,请参考以下文章