如何解决在包含换行符的文件上使用gzip时出错
我正在尝试使用python的gzip
库来简化一些创建csv输出文件的python脚本。我尝试了多种创建gzip文件的方法,但是无论尝试哪种方法,我都会遇到相同的问题。
我的python脚本运行成功,但是当我尝试在Finder(使用MacOS 10.15.6)中解压缩gzip文件时,系统提示我出现以下错误:
Unable to expand "file.csv.gz" into "Documents". (Error 79 - Inappropriate file type or format.)
经过一些调试后,我将错误原因缩小到包含换行符(\n
)字符的文件内容。
这个简单的示例代码在gzip扩展上触发了上述错误:
import gzip
content = b'Id,Food\n1,Spam\n2,Eggs\n'
f = gzip.open('file.csv.gz','wb')
f.write(content)
f.close()
当我从\n
变量中删除所有content
个字符时,一切正常:
import gzip
content = b'Id,Food,1,Spam,2,Eggs'
f = gzip.open('file.csv.gz','wb')
f.write(content)
f.close()
gzip是否要我使用其他换行机制?我确定我缺少有关gzip或二进制文件的一些基础知识,因此,非常感谢能帮助我重回正轨的任何信息。
解决方法
它与Python的gzip无关。可以说,这是macOS中的一个错误,有时它会由Archive Utility将 检测为mtree格式的未压缩数据,但随后发现未压缩的数据违反了mtree格式。
解决方案是不要双击进行解压缩。使用gzip解压缩。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。