2010-06-07 55 views
0

J'ai une grande classe en Python c'est la classe "DataBase-like". Je veux l'enregistrer dans un fichier - tout y compris les données.Classe cPickle avec les données enregistrées dans le fichier

Ceci est entrée (par exemple pour montrer la question, dans la base de données de script est comme 10000 enregistrements):

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)` 

Et c'est le fichier que je reçois:

€c__main__ 
DataBase 
q.` 

Il n'y a pas de données, juste définition . Comment puis-je surmonter cela. Peut-être que sauvegarder mes données en classe n'est pas une bonne idée?

+0

Vous devriez lire le fonctionnement des classes de Python: http://docs.python.org/tutorial/classes.html – Mark

Répondre

4

Vous décapez "DataBase" qui est une définition de classe. Vous devez instancier un objet de la classe DataBase puis le décaper.

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

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