想知道将二进制数据存储在磁盘上的文件中是个不错的选择。 很棒,如果它是一个内置的Python模块,因为我想保持所有库存。 随机访问书面数据可能是一个加号,但不是必需的。对于这个实现,我宁愿选择简单和速度。 我在找什么:现在保存 - 稍后再说。提前谢谢!
编辑:
发现cPickle错误输出的原因。在其中一个类中,我声明了self.os = os而且似乎self.os不是cPickle喜欢的东西......稍后我发现cPickle不接受PyQT对象,如果它们(PyQT类实例)给出为一个类的属性(如果你转储some_class实例的列表)。
以下示例如果运行复制相同的错误:
import cPickle
import os
class MyClass(object):
"""docstring for MyClass"""
def __init__(self, arg):
super(MyClass, self).__init__()
self.arg = arg
self.os=os
data=MyClass("Hello World")
file_name='dampData.data'
out_file = open(file_name, 'wb')
cPickle.dump(data, out_file)
out_file.close()
答案 0 :(得分:3)
我会推荐cPickle - 它也是内置的,并且明显比pickle快(在大多数情况下)。
示例:
import cPickle
out_file = open(file_name, 'w')
cPickle.dump(data, out_file)
out_file.close()
in_file = open(file_name, 'r')
data = cPickle.load(in_file)
in_file .close()
来自 pickle 的官方文档:
pickle模块有一个名为cPickle模块的优化表亲。 顾名思义,cPickle是用C语言编写的,因此它比pickle快1000倍。
答案 1 :(得分:1)
答案 2 :(得分:0)
您可以使用普通的python函数来读/写二进制文件。如果在Windows上,请在模式中添加“b”:
f = open('workfile', 'wb') # opens a file for writing in binary mode
如果您正在使用python 3,那么您可能需要使用字符串编码做更多的工作。
答案 3 :(得分:0)
阅读和书写文件:
http://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files
您可能还希望序列化数据,以便更轻松地使用
答案 4 :(得分:0)
它是内置的。
f = open("somefile.zip", "rb")
g = open("thecopy.zip", "wb")
while True:
buf = f.read(1024)
if len(buf) == 0:
break
g.write(buf)
f.close()
g.close()
http://openbookproject.net/thinkcs/python/english3e/files.html