Python3 pickleモジュールの詳細ガイド

PickleモジュールはPython標準ライブラリ内のモジュールで、Pythonオブジェクトのシリアライズとデシリアライズを行います。オブジェクトをバイトストリームに変換してファイルに保存したり、ネットワーク経由で送信できます。Pickleモジュールは必要な時にオブジェクトを再作成できるように、Pythonオブジェクトをバイトストリームとしてシリアライズできます。

以下にPickleモジュールのよく使用されるメソッドとその使用方法の例を示します。

  1. pickle.dump(obj, file) : オブジェクトをシリアライズしてファイルに保存する。
import pickle
data = {'name': 'John', 'age': 25}
with open('data.pkl', 'wb') as f:
pickle.dump(data, f)
  1. pickle.dumps(obj) は、あるオブジェクトをシリアライズしてバイトストリームを返す
import pickle
data = {'name': 'John', 'age': 25}
data_bytes = pickle.dumps(data)
  1. pickle.load(file) : シリアライズされたオブジェクトをファイルから読み込みます。
import pickle
with open('data.pkl', 'rb') as f:
data = pickle.load(f)
  1. pickle.loads(bytes):从字节流中加载一个序列化对象。
import pickle
data_bytes = b'\x80\x04\x95\x13\x00\x00\x00\x00\x00\x00\x00\x8c\x04John\x94\x8c\x03age\x94K\x19\x86\x94.'
data = pickle.loads(data_bytes)
  1. pickle.dump(obj, file, protocol):シリアライズするプロトコルバージョンを指定可能
import pickle
data = {'name': 'John', 'age': 25}
with open('data.pkl', 'wb') as f:
pickle.dump(data, f, protocol=pickle.HIGHEST_PROTOCOL)
  1. pickle.dumps(obj, protocol): シリアライズプロトコルのバージョンを指定することができます。
import pickle
data = {'name': 'John', 'age': 25}
data_bytes = pickle.dumps(data, protocol=pickle.HIGHEST_PROTOCOL)
  1. pickle.HIGHEST_PROTOCOL: シリアライズプロトコルの最新バージョンを使用することを示します。

なおPickleモジュールはPython標準のオブジェクトや自作のオブジェクトのシリアライズは可能ですが、ファイルを開いた状態やデータベース接続といった、特殊なオブジェクトはシリアライズできません。

また、pickleモジュールでは任意のPythonコードを実行することができるため、信頼できないソースからpickleモジュールでデータを読み込むときは、コードインジェクションや悪意のあるコードの実行を防ぐための注意が必要である。

bannerAds