1. 程式人生 > >關於pickle模組追加寫入讀取的問題

關於pickle模組追加寫入讀取的問題

剛剛學習pickle模組對資料進行序列化儲存,但是在使用過程中發現按照教程上的追加寫入後,讀取出來的總是第一個物件。查詢資料後發現,Pickle 每次序列化生成的字串有獨立頭尾,pickle.load() 只會按順序讀取一個完整的結果,所以只需要在 load 一次之後再 load 一次,就能讀到第二次序列化的 物件。如果不知道檔案裡有多少 pickle 物件,可以在 while 迴圈中反覆 load 檔案物件,直到丟擲異常為止。

with open('test','ab') as f:
    pickle.dump('123',f)
    pickle.dump('456',f)
    f.close()
with open('test','ab') as f:
    pickle.dump('789',f)
    f.close()
with open('test','rb') as f:
    while True:
        try:
            aa=pickle.load(f)
            print(aa)
        except EOFError:
            break

執行結果: