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,

留言

這個網誌中的熱門文章

Ubuntu 常用指令、分類與簡介

iptables的觀念與使用

網路設定必要參數IP、netmask(遮罩)、Gateway(閘道)、DNS

了解、分析登錄檔 - log

Python 與SQLite 資料庫

Blogger文章排版範本

Pandas 模組

如何撰寫Shell Script

查詢指令或設定 -Linux 線上手冊 - man

下載網頁使用 requests 模組