1. 程式人生 > >Python中的pickle模組簡單介紹

Python中的pickle模組簡單介紹

使用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}
>>>