物件持久化(類似存檔)

2021-10-02 13:35:31 字數 1422 閱讀 4700

現在python較為常用的3種對資訊進行儲存的方式:扁平檔案, pickle, shelve (進行序列化儲存和反序列化讀取檔案)

扁平檔案 文字資訊

scores =[88

,99,77

,55]def

write_scores()

:with

open

('data_list.txt'

,'w'

,encoding=

'utf8'

)as f:

f.write(

str(scores)

)print

("檔案完成寫入..."

)def

read_scores()

:with

open

('data_list.txt'

,'r'

,encoding=

'utf8'

)as f:

lst=

eval

(f.read())

#eval 將傳入字串轉化為表示式,但易錯

print

(lst)

if __name__ ==

"__main__"

: write_scores(

)

pickle

pickle儲存內容 存多個物件時麻煩,建議乙個物件存乙個檔案

person =

s=pickle.dumps(person)

#序列化儲存,不產生檔案

s=pickle.loads(s)

pickle.dump(person,

open

('pickle_db'

,'wb'))

#儲存至檔案

p=pickle.load(

open

('pickle_db'

,'wb'

))

shelve

shelve可以字典形式保留多個檔案。使用較簡單

import shelve

scores =[99

,88,77

]student =

db = shelve.

open

('shelve_student'

)#開啟或建立檔案

db['s'

]=student

db['scores'

]= scores

len(db)

#獲取長度

db.close(

)#關閉流

del(db[

'scores'

])

python pickle持久化存檔

那麼為什麼需要序列化和反序列化這一操作呢?便於儲存。序列化過程將文字資訊轉變為二進位制資料流。這樣就資訊就容易儲存在硬碟之中,當需要讀取檔案的時候,從硬碟中讀取資料,然後再將其反序列化便可以得到原始的資料。在python程式執行中得到了一些字串 列表 字典等資料,想要長久的儲存下來,方便以後使用,而...

物件持久化

物件持久化 ifname main read scores pickle 將字典表序列化成字串pickle.dumps 字串變回字典用pickle.loads s import pickle person s pickle.dumps person 序列化 p pickle.loads s 恢復 序...

python 物件持久化

print open persondb.dat rb read testdemo2.py 讀取資料庫 載入乙個例項的時候,類極其模組的檔案都必須匯入 該類的例項再次載入的時候,對類的源 檔案的修改會自動選取 import testdemo import shelve db shelve.open p...