2017-02-10 30 views
1

這個問題可能看起來有點基礎,但無法找到任何我在互聯網上理解的東西。如何儲存我用蒔蘿醃製的東西?如何蒔蘿(醃菜)檔案?

我已經走到這一步救了我的構造(熊貓據幀,其中還包含自定義類):

import dill 
dill_file = open("data/2017-02-10_21:43_resultstatsDF", "wb") 
dill_file.write(dill.dumps(resultstatsDF)) 
dill_file.close() 

和閱讀

dill_file = open("data/2017-02-10_21:43_resultstatsDF", "rb") 
resultstatsDF_out = dill.load(dill_file.read()) 
dill_file.close() 

但閱讀時,我我得到的錯誤

TypeError: file must have 'read' and 'readline' attributes 

我該怎麼做?

回答

5

只要給它沒有read文件:

resultstatsDF_out = dill.load(dill_file) 

你也可以蘿到文件是這樣的:

with open("data/2017-02-10_21:43_resultstatsDF", "wb") as dill_file: 
    dill.dump(resultstatsDF, dill_file) 

所以:

dill.dump(obj, open_file) 

寫到一個文件直接。鑑於:

dill.dumps(obj) 

序列化obj,你可以寫它自己的文件。

同樣:

dill.load(open_file) 

從文件中讀取,以及:

dill.loads(serialized_obj) 

構造一個對象形成一個序列化對象,你可以從文件中讀取。

建議使用with語句打開文件。

這裏:

with open(path) as fobj: 
    # do somdthing with fobj 

具有相同的效果:

fobj = open(path) 
try: 
    # do somdthing with fobj 
finally: 
    fobj.close() 

你離開with語句的縮進,即使在出現異常的情況下,該文件將盡快關閉。