pythonベースpickleオブジェクトのシーケンス化

6559 ワード

pickle pythonオブジェクトのシーケンス化
シーケンス化とは
シーケンス化(Serialization)は、オブジェクトの状態情報を記憶または伝送可能な形式に変換するプロセスである.シーケンス化中に、オブジェクトは現在のステータスを一時的または永続的なストレージ領域に書き込みます.その後、オブジェクトの状態をストレージ領域から読み出したり逆シーケンス化したりすることで、オブジェクトを再作成できます.
モジュールpickleは、1つのPythonオブジェクト構造のバイナリシーケンス化および逆シーケンス化を実現する.Picklingは、Pythonオブジェクトとその所有する階層をバイトストリームに変換するプロセスであり、unpicklingは逆の操作であり、(binary fileまたはbytes-like objectからの)バイトストリームをオブジェクト階層に変換します.Pickling(およびunpickling)は「シーケンス化」、「グループ化」1または「平面化」とも呼ばれます.混乱を避けるために、ここでは「pickling」と「unpickling」という用語を用いる.

パッケージ解除可能なオブジェクト
  • NoneTrueおよびFalse
  • .
  • 整数、浮動小数点数、複素
  • str、byte、bytearray
  • は、tuple、list、set、dict
  • を含むパッケージ可能なオブジェクトのセットのみを含む.
  • モジュールの最上位層に定義する関数(def定義を使用し、lambda関数は不可)
  • .
  • は、モジュールの最上位層に組み込まれた関数
  • を定義する.
  • モジュールの最上位レベルに定義されたクラス
  • いくつかのクラスの例では、これらのクラスの__dict__属性値または__getstate__()関数の戻り値をパッケージ化することができる
  • .
    一般的な関数:
    pickle.dump(object, file)
    pickle.dumps(object) -> string
    pickle.load(file) -> object
    piclke.loads(string) -> object
    
    
    import pickle 
    obj=['this is a stirng',34,{1:2},None]
    Serialization_obj=pickle.dumps(obj)
    print(Serialization_obj)// b'\x80\x03]q\x00(X\x10\x00\x00\x00this is a stirngq\x01K"}q\x02K\x01K\x02sNe.'
    objj=pickle.loads(Serialization_obj)
    print(objj)// ['this is a stirng', 34, {1: 2}, None]
    

    dumps()関数オブジェクトをバイナリバイトストリームにシーケンス化
    load()関数はバイナリバイトストリームをオブジェクトに逆シーケンス化する
    import pickle 
    
    obj=['this is a stirng',34,{1:2},None]
    pickle.dump(obj,open('obj.pkl','wb')) //  obj      obj.pkl  
    objj=pickle.load(open('obj.pkl','rb'))//  obj.pkl          
    print(objj)//['this is a stirng', 34, {1: 2}, None]