简体   繁体   English

具有数据的cPickle类保存到文件

[英]cPickle class with data save to file

I've big class in Python it's "DataBase-like" class. 我在Python中有一个大类,它是“类数据库”类。 I want to save it to file - all including data. 我想将其保存到文件-全部包括数据。

This is input(example to show the issue, in script database is like 10000 records): 这是输入(显示问题的示例,在脚本数据库中类似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)`

And that's the file I get: 那就是我得到的文件:

€c__main__
DataBase
q.`

There's no data, just definition. 没有数据,只有定义。 How can I overcome that. 我该如何克服。 Maybe saving my data as a class is not a good idea? 也许将数据保存为类不是一个好主意?

You are pickling "DataBase" which is a class definition. 您正在腌制作为类定义的“ DataBase”。 You need to instantiate an object of class DataBase then pickle that. 您需要实例化DataBase类的对象,然后对其进行腌制。

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM