我发现this snippet,这似乎做的工作,但我不明白为什么它使用StringIO的。是不是f
已经是一个文件类对象?有什么需要阅读它,然后再使它看起来像一个文件,只能再次阅读它?我已经测试了它(好吧,它的一个稍微修改过的版本),没有StringIO就无法工作。Python:处理gzip json的正确方法是什么?
3
A
回答
1
似乎是python标准库中的一个缺陷,它在Python 3.2中修复。
看到http://www.enricozini.org/2011/cazzeggio/python-gzip/
urllib
和urllib2
文件对象不提供一种方法,通过tell()
的gzip的要求。
+0
谢谢!很棒的发现。我有一天会迁移到python 3.x :) –
0
就我阅读代码的相关部分说:
- 打开一个URL
- 完全下载到内存中(与
read
法) - 存放在StringIO对象的内容,因此,它是可以作为一个类文件对象
- 执行gzip和JSON的东西吧。
1
这有可能是gunzip解代码需要具有seek
方法,其中一个HTTP库是不太可能提供一个类似文件的对象。 “不起作用”是什么意思?错误信息?
如果效率是你真正关心的,稍微修改代码,以便它使用cStringIO,不StringIO的。
相关问题
- 1. JSON响应与jQuery - 什么是正确的方式来处理?
- 2. 在python中存储这个JSON的正确方法是什么?
- 3. 处理格式不正确的JSON字符串的最佳方法是什么?
- 4. 在wxWidgets中处理链表的正确方法是什么?
- 5. 测试错误处理的正确方法是什么?
- 6. 处理鼠标拖动的正确方法是什么?
- 7. iOS中异常处理的正确方法是什么?
- 8. 处理程序集版本的正确方法是什么?
- 9. iphone/ipad处理图像旋转的正确方法是什么?
- 10. 什么是处理FB.Event.subscribe的正确方法?
- 11. 在ASP.NET MVC中处理表单的正确方法是什么?
- 12. 处理多级网络请求的正确方法是什么?
- 13. 使TcpListener异步处理连接的正确方法是什么?
- 14. 在JQuery中处理事件的正确方法是什么?
- 15. 在VB6中处理Variant类型的正确方法是什么?
- 16. 处理System.Timers.Timer的正确方法是什么?
- 17. 循环时处理动作NEW_OUTGOING_CALL的正确方法是什么?
- 18. 在C++中做事件处理的正确方法是什么?
- 19. 在PyQt 4中处理事件的正确方法是什么?
- 20. Node.JS:处理postdata读取错误的正确方法是什么?
- 21. 什么是处理数据库的正确方法?
- 22. 什么是处理图片扩展的正确方法?
- 23. 处理WPF窗口的正确方法是什么?
- 24. WCF WebApi,处理IsThisTaken查询的正确方法是什么?
- 25. 处理复杂数据结构的正确方法是什么?
- 26. 在Windows中处理unicode subprocess env的正确方法是什么?
- 27. 在Ruby IO中处理SystemCallErrors的正确方法是什么?
- 28. 在Electron中处理表单的正确方法是什么?
- 29. 在nodeunit中处理异步性的正确方法是什么?
- 30. 在Python中注册信号处理程序的正确方法是什么?
您具体是如何“稍微修改”的代码? – pvoosten
这就是为什么我使用'httplib2' - http://code.google.com/p/httplib2 – Anders