我發現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. 處理JPA期間查詢的正確方法是什麼?
- 5. 在awakeFromNib中處理錯誤的正確方法是什麼?
- 6. 在Electron中處理表單的正確方法是什麼?
- 7. 在Ruby IO中處理SystemCallErrors的正確方法是什麼?
- 8. 處理網絡連接的正確方法是什麼?
- 9. 處理程序集版本的正確方法是什麼?
- 10. 在nodeunit中處理異步性的正確方法是什麼?
- 11. 在ASP.NET MVC中處理表單的正確方法是什麼?
- 12. iphone/ipad處理圖像旋轉的正確方法是什麼?
- 13. 處理WPF窗口的正確方法是什麼?
- 14. 測試錯誤處理的正確方法是什麼?
- 15. 循環時處理動作NEW_OUTGOING_CALL的正確方法是什麼?
- 16. 處理System.Timers.Timer的正確方法是什麼?
- 17. 用多線程處理文件的正確方法是什麼?
- 18. Arduino - 處理一系列結構的正確方法是什麼?
- 19. 在Git中處理數據庫的正確方法是什麼?
- 20. 在JQuery中處理事件的正確方法是什麼?
- 21. 使用線程處理錯誤的正確方法是什麼?
- 22. 在VB6中處理Variant類型的正確方法是什麼?
- 23. 處理多級網絡請求的正確方法是什麼?
- 24. Node.JS:處理postdata讀取錯誤的正確方法是什麼?
- 25. 處理RAII成員變量的正確方法是什麼?
- 26. 什麼是處理FB.Event.subscribe的正確方法?
- 27. 處理複雜數據結構的正確方法是什麼?
- 28. 使TcpListener異步處理連接的正確方法是什麼?
- 29. 在golang net/http中處理TLSNextProto的正確方法是什麼?
- 30. 在wxWidgets中處理鏈表的正確方法是什麼?
您具體是如何「稍微修改」的代碼? – pvoosten
這就是爲什麼我使用'httplib2' - http://code.google.com/p/httplib2 – Anders