【问题标题】:Unzipping a gzip file that contains a csv解压缩包含 csv 的 gzip 文件
【发布时间】:2018-10-12 19:56:27
【问题描述】:

我刚刚到达一个端点,可以下载一个 gzip 压缩文件。 我已经尝试保存它并提取其中的 csv,但是无论我是否尝试将其当前状态从二进制转换为 utf-8/utf-16,我都会遇到编码错误。

要写入保存的 gzip,我以二进制模式写入:

r = requests.get(url, auth=auth, stream=True)
with gzip.open('file.gz', 'wb') as f:
    f.write(r.content)

r.content 的样子:

b'PK\x03\x04\x14\x00\x08\x08\x08\x00f\x8dKM\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00A\x00\x00\x00RANKTRACKING_report_created_at_11_10_18_17_41-20181011-174141.csv\xec\xbdk\x8f\xe3V\x96\xae\xf9}\x80\xf9\x0f\ ... '

要在我的机器上手动解压缩文件,我首先必须解压缩到 zip,然后我可以将其解压缩以获取 csv。我在那里尝试过同样的方法,但也遇到了编码错误。

寻找一种方法来提取这个 csv,以便我可以在 python 控制台中打印行。

【问题讨论】:

  • 你能显示失败的代码吗?
  • 不要使用gzip.open(...,只使用open(...

标签: python python-3.x binary zip gzip


【解决方案1】:

这不是 gzip 文件。那是一个 zip 文件。然后,您将获取从 URL 中检索到的 zip 文件,并尝试将其再次压缩为 gzip 文件。所以现在你在 gzip 文件中有一个 zip 文件。您离提取 CSV 内容更远了一步,而不是更近了一步。

你需要使用zipfile来解压你下载的zip文件的内容。

【讨论】:

  • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
  • API 文档指出它是一个 Gzip,这让我很困惑。感谢帮助。你是怎么认出这是一个拉链的?
  • “PK”。 Zip 标头以 PK 开头。 (它代表创建 zip 文件格式和 PKZip 软件的 Phil Katz。)
  • @Alex.K.现在很明显,我最初的回答是“那不是 gzip 文件。那是 zip 文件。”事实上完全完全回答了这个问题。正如我所怀疑的那样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 2023-01-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多