Python在磁盘上的文件中存储二进制数据

时间:2014-02-03 21:05:49

标签: python caching

想知道将二进制数据存储在磁盘上的文件中是个不错的选择。 很棒,如果它是一个内置的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()

5 个答案:

答案 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)

查看pickleshelve个模块!

答案 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

您可能还希望序列化数据,以便更轻松地使用

http://docs.python.org/2/library/pickle.html

答案 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