Python:处理 gzipped json 的正确方法是什么?
我找到了 这个片段,它似乎可以完成这项工作,但我不明白为什么它使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
似乎是 python 标准库中的一个缺陷,已在 Python 3.2 中修复。
请参阅http://www.enricozini.org/2011/cazzeggio/python-gzip/< /a>
urllib
和urllib2
文件对象未提供 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
andurllib2
file objects do not provide a methodtell()
as requested by gzip.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.
我阅读代码相关部分的方式是这样的:
read
方法)The way I read the relevant part of the code says:
read
method)