現在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...