我怎樣才能在一個文件(Python文件1)中包含一個類的實例並在另一個文件(Python文件2)中包含pickle.load
的實例的字典對象?Pickle Python中的類實例字典
我有一個龐大複雜的數據集組成的幾個文件,我創建了一個類來存儲我所有的屬性。我製作了一本詞典來存儲所有的樣本和屬性。 key = sample,value =包含屬性的類的實例。下面的例子:
#Python File 1
import random
class Storage:
def __init__(self,label,x,y):
self.label = label; self.x = x; self.y = y
def get_x(self): return(self.x)
def get_y(self): return(self.y)
D_var_instance = {}
L = ["A","B","C"]
for var in L:
D_var_instance[var] = Storage(label=var,x=random.random(),y=random.random())
print(D_var_instance["A"])
#<__main__.Storage instance at 0x102811128>
print(D_var_instance["A"].get_x())
#0.193517721574
我花了很長的時間與我的真實數據集,使這個,我嘗試使用pickle
和pickle.dump
字典對象,但它不工作:
#Python File 1
import pickle
pickle.dump(D_var_instance,open("/path/to/dump.txt","w"))
pickle.dump(Storage, open("/path/to/storagedump.txt","w"))
我試圖在另一個裝與此代碼的Python文件:
#Python File 2
import pickle
Storage = pickle.load(open("/path/to/storagedump.txt","r"))
D_var_instance = pickle.load(open("/path/to/dump.txt","r"))
得到這個錯誤:
AttributeError: 'module' object has no attribute 'Storage'
我希望我不需要醃一個班的每個實例......這會吸引我,因爲我有成千上萬的實例。 –
是否嘗試在嘗試加載泡菜的文件中定義相同的'Storage'類?另外,您應該打開文件以使用二進制模式('b')讀/寫醃菜。 –
我只是複製粘貼你的代碼,我沒有得到你的錯誤。我收到了這個輸出:'{'A':<__ main__.Storage實例在0x10a128998>,'C':<__ main__.Storage實例在0x10a1289e0>,'B':<__ main__.Storage實例在0x10a128a28>}' – idjaw