Python中的pickle模組簡單介紹
阿新 • • 發佈:2018-12-18
使用eval可以把字串轉換成物件,它是一個功能強大的工具。比如:
>>> eval("1+1") # 將字元物件直接運算,得出運算結果
2
>>> eval("[1, 2, 3]") # 將字串物件轉變成列表物件
[1, 2, 3]
>>> eval("{'a': 1, 'b': 2}\n") # 將字串物件轉換成字典物件,並去除\n換行符
{'a': 1, 'b': 2}
>>>
但事實上,eval太強大,傳給它的字串的物件都會執行, 甚至會刪除計算機上所有檔案的表示式,只要許可權夠,它都會屁顛屁顛的去執行,比如說下面字串物件:
>>> import os # 匯入os模組
>>> eval("os.system('sudo rm -rf /*')") # 刪除計算機裡面的所有檔案
如果想儲存Python原生物件,但又無法信賴檔案的資料來源,Python中的pickle模組是個理想的選擇。pickle模組是能夠讓我們直接在檔案中儲存幾乎任何Python物件的高階工具,也並不需要我們把字串轉換來轉換去。是非常通用的資料格式化和解析工具。
-
使用pickle.dump來儲存資料
>>> import pickle >>> D = {'A': 1, 'B': 2} >>> F = open("data.pkl", "wb") # 要儲存到的具體檔名,開啟型別為'wb' >>> pickle.dump(D, F) # 使用dump方法儲存檔案 >>> F.close()
-
使用pickle.load來提取資料
>>> import pickle
>>> F = open("data.pkl", "rb") # 開啟資料檔案,具體型別'rb'
>>> E = pickle.load(F) # 使用load方法來匯出資料
>>> E
{'A': 1, 'B': 2}
>>>