Python資料儲存:pickle模組的使用
Python資料儲存:pickle模組的使用
前言大綱
在Python裡用於將資料序列化永久保存的兩個模組 : JSON 和 pickle 模組 :
- JSON:容易閱讀,用於字串和Python資料型別間進行轉換。
- pickle : 不易閱讀,資料以二進位方式儲存,用於python特有的型別和python的資料型別間進行轉換。
- JSON 提供四個功能:dumps,dump(存入file), loads,load (從file讀取)。
- pickle提供四個功能:dumps,dump,loads,load
pickle.dump()
格式 : pickle.dump(obj, file, [,protocol])
- 函式的功能:將obj物件序列化存入已經開啟的file中。
- obj:想要序列化的obj物件。
- file:檔名稱。
- protocol:序列化使用的協議。如果該項省略,則預設為0。如果為負值或HIGHEST_PROTOCOL,則使用最高的協議版本。
範例 pythonPickle-01.py:
# pythonPickle-01.py import pickle game_info = { "position_X":"100", "position_Y":"200", "money":300, "pocket":["黃金", "鑰匙", "小刀"] } fileName = "pythonPickle-01.dat" file_obj = open(fileName, 'wb') # 二進位開啟 pickle.dump(game_info, file_obj) file_obj.close()
執行結果
在工作目錄中會生成一個二進位檔案 pythonPickle-01.dat
pickle.load(file)
- 函式的功能:將file中的物件序列化讀出,載入成Python物件。
- file:檔名稱。
範例 pythonPickle-02.py : load()功能,載入 範例 pythonPickle-01.py 生成的檔案 "pythonPickle-01.dat"
# pythonPickle-02.py import pickle fileName = "pythonPickle-01.dat" file_obj = open(fileName, 'rb') # 二進位開啟 game_info = pickle.load(file_obj) file_obj.close() print(game_info)
執行結果
{'position_X': '100', 'position_Y': '200', 'money': 300, 'pocket': ['黃金', '鑰匙', '小刀']}
pickle.dumps(obj[, protocol])
- 函式的功能:將obj物件序列化為string形式,而不是存入檔案中。
- obj:想要序列化的obj物件。
- protocal:如果該項省略,則預設為0。如果為負值或HIGHEST_PROTOCOL,則使用最高的協議版本。
範例 pythonPickle-03.py : dumps()功能
# pythonPickle-03.py #dumps功能 import pickle data = ['1','3','4'] #將data中python的特殊資料形式存為只有python語言認識的字串 a = pickle.dumps(data) print(a)
執行結果
b'\x80\x04\x95\x11\x00\x00\x00\x00\x00\x00\x00]\x94(\x8c\x011\x94\x8c\x013\x94\x8c\x014\x94e.'
pickle.loads(string)
- 函式的功能:從string中讀出序列化前的obj物件。
- string:檔名稱。
範例 pythonPickle-04.py : loads()功能
# pythonPickle-04.py #dumps功能 import pickle data = ['1','3','4'] #將data中python的特殊資料形式存為只有python語言認識的字串 a = pickle.dumps(data) print(a) # loads功能 # 將pickle資料轉換為python的資料結構 b = pickle.loads(a) print(b)
執行結果
b'\x80\x04\x95\x11\x00\x00\x00\x00\x00\x00\x00]\x94(\x8c\x011\x94\x8c\x013\x94\x8c\x014\x94e.'
['1', '3', '4']
參考資料
特色、摘要,Feature、Summary:
關鍵字、標籤,Keyword、Tag:
- Python,Programming-Language,Data-Model,Python-Tutorial,
留言
張貼留言
Aron阿龍,謝謝您的留言互動!