将数据保存到文件的cPickle类

0 投票
1 回答
1150 浏览
提问于 2025-04-15 23:40

我在Python里有一个很大的类,它类似于“数据库”的功能。我想把这个类的所有内容,包括数据,都保存到文件里。

这是输入的例子(为了说明问题,实际上这个数据库大概有10000条记录):

import cPickle
# DataBase-like class
class DataBase:
    class Arrays: pass
    class Zones: pass
    class Nodes: 
        class CR: pass    
    class Links: 
        class CR: pass
    class Turns:
        class CR: pass    
    class OrigConnectors: pass
    class DestConnectors: pass    
    class Paths: pass
    pass
# some basic input into database
DataBase.Arrays.Data=[]
for i in range(1000):
    DataBase.Arrays.Data.append([i+4]) 

print DataBase.Arrays.Data[56]

# and now I want to save it to file

import cPickle    

filename='D:/results/file.lft'
file=open(filename,'w')
cPickle.dump(DataBase, file, protocol=2)`

而这是我得到的文件:

€c__main__
DataBase
q.`

文件里没有数据,只有定义。那我该怎么解决这个问题呢?也许把我的数据保存为一个类并不是个好主意?

1 个回答

4

你正在对“DataBase”这个类进行序列化。你需要先创建一个DataBase类的对象,然后再对这个对象进行序列化。

objDataBase = DataBase()
objDataBase.Arrays.Data = etc....

filename='D:/results/file.lft'
file=open(filename,'w')
cPickle.dump(objDataBase, file, protocol=2)
file.close()

撰写回答