Python:处理 gzipped json 的正确方法是什么?

发布于 2024-12-09 06:02:32 字数 214 浏览 1 评论 0原文

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

I've found this snippet, which seems to do the job, but I can't understand why it uses StringIO. Isn't f already a file-like object? What is the need to read it, then make it look like a file again, only to read it again? I've tested it (well, a slightly modified version of it), and it doesn't work without StringIO.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

哆啦不做梦 2024-12-16 06:02:32

似乎是 python 标准库中的一个缺陷,已在 Python 3.2 中修复。
请参阅http://www.enricozini.org/2011/cazzeggio/python-gzip/< /a>

urlliburllib2 文件对象未提供 gzip 请求的方法 tell()

Seems to be a flaw in python standard library which is fixed in Python 3.2.
see http://www.enricozini.org/2011/cazzeggio/python-gzip/

urllib and urllib2 file objects do not provide a method tell() as requested by gzip.

烛影斜 2024-12-16 06:02:32

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

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

It's possible that the gunzip code needs a file-like object that has a seek method, which a HTTP library is very unlikely to provide. What does "doesn't work" mean? Error message?

If efficiency is your real concern, slightly modify the code so that it uses cStringIO, not StringIO.

荒路情人 2024-12-16 06:02:32

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

  • 打开一个 url
  • 将其完全下载到内存中(使用 read 方法)
  • 将内容存储在 StringIO 对象中,以便它可以作为类似文件使用object
  • 用它做 gzip 和 json 的事情。

The way I read the relevant part of the code says:

  • Open an url
  • Download it completely into memory (with the read method)
  • Store the content in a StringIO object, so that it's available as a file-like object
  • Do the gzip and json stuff with it.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文