3

我找到了这个片段,它似乎可以完成这项工作,但我不明白为什么它使用 StringIO。不是f已经是类似文件的对象了吗?有什么需要读取它,然后让它看起来像一个文件,只是为了再次读取它?我已经对其进行了测试(嗯,它的一个稍微修改的版本),如果没有 StringIO,它就无法工作。

4

3 回答 3

1

似乎是 Python 3.2 中修复的 Python 标准库中的一个缺陷。
http://www.enricozini.org/2011/cazzeggio/python-gzip/

urlliburllib2文件对象不提供tell()gzip 要求的方法。

于 2011-10-10T20:10:33.510 回答
1

gunzip 代码可能需要一个类似文件的对象,该对象具有seek一个 HTTP 库不太可能提供的方法。“不起作用”是什么意思?错误信息?

如果您真正关心效率,请稍微修改代码,使其使用 cStringIO,而不是 StringIO。

于 2011-10-10T20:11:21.520 回答
0

我阅读代码相关部分的方式是:

  • 打开一个网址
  • 完全下载到内存中(用read方法)
  • 将内容存储在 StringIO 对象中,以便它可用作类似文件的对象
  • 用它做 gzip 和 json 的东西。
于 2011-10-10T19:54:06.450 回答