我有一个愚蠢的问题。可能使用另一个协议选项重新使用已经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. 使用创建协议