python中pickle模組學習
- 2020 年 1 月 9 日
- 筆記
在python中有一個pickle的標準模組,這個模組可以把幾乎python中所有類型通過模組轉換成pickle所能識別的格式進行存儲。
pickel模組主要有兩個函數dump()和load()
dump()可以把數據對象以特定的格式保存在指定的文件中
語法:
pickle.dump(obj,file)
load()是從文件中提取已經經過pickle序列化的數據,pickle通過自己的方法進行恢復到原來的格式。
語法:
pickle.load(file)
pickle的使用:
首先使用dump()對一組數據進行序列化存儲
#!/usr/bin/env python import pickle account_info = { 82345056 : ['123','150'], 82345057 : ['avcd','90'] } pkl_file = file('account.pkl','wb') #文件保存在account.pkl中 pickle.dump(account_info, pkl_file) #通過dump函數進行序列化處理 pkl_file.close()
當執行完個腳本的時候會在當前目錄下產生一個account.pkl的文件
root@addam:/script#more account.pkl (dp0 I82345056 (lp1 S'123' p2 aS'150' p3 asI82345057 (lp4 S'avcd' p5 aS'90' p6 as.
這就是經過pickle序列化之後的文件,當然這個格式估計只有pickle才明白是用什麼格式弄出來的吧,哈哈。。下面要在新的文件中引用這個文件,我們就需要用load()了:
#!/usr/bin/env python import pickle pkl_file = file('account.pkl','rb') #打開剛才存儲的文件 account_dic = pickle.load(pkl_file) #通過load轉換回來 print account_dic pkl_file.close() ~
執行結果如下
root@addam:/script#python Lod.py {82345056: ['123', '150'], 82345057: ['avcd', '90']}
當然在這個過程中如果我們要修改其中的內容怎麼辦呢,很簡單了
#!/usr/bin/env python import pickle account_info = { 82345056 : ['123','150',], 82345057 : ['avcd','90'] } pkl_file = file('account.pkl','wb') account_info[82345057][0] = 'abcd123' #將82345057中列表的第一個值修改為abcd23 pickle.dump(account_info, pkl_file) pkl_file.close()
下面我們重新load一下看看是不是修改了呢?
root@addam:/script#python Lod.py {82345056: ['123', '150'], 82345057: ['abcd123', '90']}
好吧,現在我們可以看到已經修改成功了哦。
pikcle模組在python中的功能很強大,也是以後經常要用的模組哦。