我有一個愚蠢的問題。可能使用另一個協議選項重新使用已經cPickled的文件(cPickle),以及哪種協議最適合非常大的文件。將不勝感激任何幫助/建議。cPickle文件使用協議選項
-1
A
回答
4
我真的不明白你的酸洗文件的意思。你想閱讀一個醃製文件作爲二進制文件,而不unpickling,然後再次醃製它?這應該不是問題,但我不認爲它會做什麼好...
pickle中的默認協議版本是0,ASCII(pickle docs)。最新的二進制協議是2,它給你更小的文件大小。對於我來說,一個二進制pickle輸出只是som jpg圖片的一半大小,與下面代碼中的ASCII pickle一樣大。
你可能想要考慮cerealizer它有一個類似界面的泡菜,但更安全。它似乎有它自己的二進制協議,文件大小與pickle二進制一樣小。
import cerealizer
#import cPickle as cerealizer
def save(data, filename):
f = open(filename,"wb")
cerealizer.dump(data, f, protocol=2)
f.close()
def load(filename):
f = open(filename,"rb")
p = cerealizer.load(f)
f.close()
return(p)
if __name__ == "__main__":
import PIL.Image
import cStringIO as StringIO
stringIO = StringIO.StringIO()
im = PIL.Image.open("picture.jpg")
im.save(stringIO, "JPEG")
stringIO.seek(0)
save(stringIO.read(), "testCerealizerIm.txt")
binaryImageData = load("testCerealizerIm.txt")
stringIO2 = StringIO.StringIO()
stringIO2.write(binaryImageData)
stringIO2.seek(0)
im = PIL.Image.open(stringIO2)
im.show()
2
您取消它並重新打開它。協議版本可以作爲選作爲泡菜API的一部分:
相關問題
- 1. 文件協議
- 2. 帶選項協商的TFTP協議
- 3. Perl:文件協議
- 4. 傳輸文件的協議
- 5. python webkitgtk xmlhttprequest文件協議
- 6. 協議緩衝區文件?
- 7. 使用協議HTPPS
- 8. 使用Websocket協議
- 9. 有沒有任何協議使用選項頭?
- 10. 協議的選擇?
- 11. 二進制協議與文本協議
- 12. firefox:使用文件協議下載JavaScript文件?
- 13. 對JS的新應用協議文件
- 14. Swift協議專用通用協議
- 15. 從本地協議強制使用Javascript協議中的http協議
- 16. 如何使用UDP協議使SIP協議更可靠
- 17. 如何使用Windows郵件協議? (C#?)
- 18. 打開郵件使用協議「MAPI://」
- 19. SPDH協議文檔
- 20. 協議的哈希協議
- 21. WebDav協議VS HTTP協議
- 22. VUGen使用SAPGUI協議
- 23. 使用__attribute __((objc_requires_super))與協議
- 24. 使用Javascript輸出協議
- 25. nutch使用的協議
- 26. 在協議中使用UIView.animateWithDuration
- 27. 使用SVN協議的XCode
- 28. Objective C協議的使用
- 29. 使用錯誤協議
- 30. 使用創建協議