我正在尝试使用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()
如果我从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或二进制文件的某些基础知识,因此任何有助于让我重新回到正轨的信息都将不胜感激。
gzip -cd <file.csv.gz
对于带有或不带有\n
的content
都可以成功执行。 - ptsgzip.py
有缺陷,从而生成损坏的 .gz 文件。您可以分享生成的file.csv.gz
,以便我们检查它是否正确。您还可以尝试在 macOS 或 Linux 上使用gzip -cd <...
进行解压缩。 - ptsgzip -cd <file.csv.gz
时,它可以很好地解压缩。输出为:Id,Food\n1,Spam\n2,Eggs\n
。也许这是一个 MacOS 的错误。 - Daniel Long