python文件操作:pickle模塊多次dump後出現的讀取問題
阿新 • • 發佈:2017-08-02
讀寫 class 取出 span 由於 無法 pen 寫文件 color
pickle模塊在python中是用於數據持久化的,基本用法涉及到的也就是dump和load,亦或者dumps和loads。
pickle在使用過程中有一個特點,就是由於其特殊的內容標記,使得文件dump幾次,就必須load幾次才能將數據全部讀出來,用代碼來展現就是如下形式:
import pickle a=1 b=2 c=3 with open("ceshi.txt","wb") as f: pickle.dump(a,f) pickle.dump(b,f) pickle.dump(c,f) f=open("ceshi.txt","rb") with open("ceshi.txt","rb") as f : print(pickle.load(f))
最終結果為:
1
如果想要讀取全部的值,那麽只能是dump了幾次,就load幾次,如下:
import pickle a=1 b=2 c=3 with open("ceshi.txt","wb") as f: pickle.dump(a,f) pickle.dump(b,f) pickle.dump(c,f) f=open("ceshi.txt","rb") with open("ceshi.txt","rb") as f : print(pickle.load(f))print(pickle.load(f)) print(pickle.load(f))
最終結果為:
1
2
3
我們在後續讀寫文件時,不可能記住所有的dump次數,也就無法準確的使用load多次的方式來取出值。我們可以使用另外一種方式來進行曲線救國:
直接無限循環執行pickle.load命令,直至其報錯才停止。
import pickle a=1 b=2 c=3 with open("ceshi.txt","wb") as f: pickle.dump(a,f) pickle.dump(b,f) pickle.dump(c,f) f=open("ceshi.txt","rb") with open("ceshi.txt","rb") as f : while True: try: print(pickle.load(f)) except: break
最終結果為:
1
2
3
通過這種方式,我們也可以做到將pickle生成的文件內容全部取出來。
python文件操作:pickle模塊多次dump後出現的讀取問題