1. 程式人生 > >python文件操作:pickle模塊多次dump後出現的讀取問題

python文件操作:pickle模塊多次dump後出現的讀取問題

讀寫 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後出現的讀取問題