在包含换行符的文件上使用 gzip 时出错
Error when using gzip on a file containing line breaks
我正在尝试使用 python 的 gzip
库来简化一些创建 csv 输出文件的 python 脚本。我尝试了多种不同的方法来创建 gzip 文件,但无论我尝试过哪种方法,我都会 运行 遇到同样的问题。
我的 python 脚本成功运行,但是当我尝试在 Finder 中解压缩 gzip 文件时(使用 MacOS 10.15.6),我收到以下错误提示:
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()
当我从 content
变量中删除所有 \n
个字符时,一切正常:
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 格式。
解决方法是不double-click解压。使用gzip解压。
我正在尝试使用 python 的 gzip
库来简化一些创建 csv 输出文件的 python 脚本。我尝试了多种不同的方法来创建 gzip 文件,但无论我尝试过哪种方法,我都会 运行 遇到同样的问题。
我的 python 脚本成功运行,但是当我尝试在 Finder 中解压缩 gzip 文件时(使用 MacOS 10.15.6),我收到以下错误提示:
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()
当我从 content
变量中删除所有 \n
个字符时,一切正常:
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 格式。
解决方法是不double-click解压。使用gzip解压。