標籤:style break 無限迴圈 命令 讀寫 pre 產生 有一個 code
pickle模組在python中是用於資料持久化的,基本用法涉及到的也就是dump和load,亦或者dumps和loads。
pickle在使用過程中有一個特點,就是由於其特殊的內容標記,使得檔案dump幾次,就必須load幾次才能將資料全部讀出來,用代碼來展現就是如下形式:
import picklea=1b=2c=3with 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 picklea=1b=2c=3with 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 picklea=1b=2c=3with 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後出現的讀取問題