问题描述
Eurostat欧洲数据库提供了许多压缩文件,例如https://ec.europa.eu/eurostat/estat-navtree-portlet-prod/BulkDownloadListing?file=data/env_air_gge.tsv.gz
当我下载此类文件然后双击它们时,MacOS上的“存档实用程序”已正确解压缩它们。但是,当我尝试在MacOS Terminal上使用gunzip时,目标文件被压缩为gz文件(不带扩展名)。
我试图在自定义的Objective-C应用程序(以及使用zlib设计的自定义放气函数)中使用GZIP API:两者的结果都与终端应用程序中的gunzip相同。相反,在Linux程序中使用相同的C缩小函数可以完美地处理这些压缩文件。
在MacOS上使用zlib库和命令行gunzip可能会导致无法正确处理某些gz文件的问题是什么? MacOS随附的Archive Utility应用程序显然已解决了该问题...
[ UPDATE ]这变得更加奇怪:当我从另一个来源(例如https://github.com/dhalperi/cse550-code-data/raw/master/density-peaks/rawdata/sample.csv.gz)获取gz文件时,一切正常。因此问题出在欧盟统计局网站+ MacOS组合上!
[[[ UPDATE ]]找到解决方案:
•在Eurostat的http响应中,Content-Type被定义为“ application / octet-stream”(编码定义为“ gzip”)。
•使用此设置,服务器会即时将文件gzip压缩,以使其两次压缩
•当Content-Type定义为“ application / x-gzip”时,服务器不会对其进行gzip压缩,并且文件可以一次通过解压缩...
•通过对服务器响应的分析,可以检测出两次压缩文件,以了解何时需要两次解压缩。
解决方法
对我来说似乎很好。您是如何下载的?下载后文件的大小是多少?我得到了2,989,400字节。
根据评论,您的评论更大。它可能已被多次压缩。存档实用程序会一直压缩它,直到它不再具有gzip标头为止。您必须自己使用命令行gunzip来做到这一点。