pythonラーニング_pickleモジュールを適用してデータオブジェクトをカプセル化およびカプセル化

4785 ワード

ファイルデータ処理を学ぶときにpickleモジュールがあることを知り、公式ドキュメントを探して必要なpickleの内容を学びました.
カプセル化はPythonデータオブジェクトをバイトストリームに変換するプロセスであり、カプセル化はカプセル化の逆操作であり、バイトファイルまたはバイトオブジェクトのバイトストリームをPythonデータオブジェクトに変換し、信頼されていないデータソースからデータをカプセル化しないでください.ほとんどのPythonデータオブジェクトをカプセル化およびカプセル化できます.主に以下のものが含まれます.
  • None , True,False
  • 整数、浮動小数点数、複素
  • 文字列、バイト、ByteArrayオブジェクト
  • タプル、リスト、セット、カプセル化可能なオブジェクトを含む辞書
  • モジュールの最上位レベルで定義された関数
  • モジュールの最上位レベルで定義された組み込み関数
  • それはモジュールの最上位に定義されたクラス
  • です.
  • __dict__または呼び出し__getstate__()の結果は、カプセル化可能なクラスのインスタンス
  • である.
     
    pickleモジュールでよく使用される方法は、次のとおりです.
        1. pickle.dump(obj, file, protocol=None,)
    必須パラメータobjは、カプセル化するオブジェクトを表す
    必須パラメータfileはobjが書き込むファイルオブジェクトを表し、fileはバイナリ書き込み可能モードで開く必要があります.すなわち「wb」
    オプションパラメータprotocolはpicklerが使用するプロトコルを通知し、サポートされているプロトコルは0,1,2,3であり、デフォルトのプロトコルはPython 3に追加されたプロトコル3であり、その他のプロトコルの詳細はリファレンスドキュメントを参照してください.
        2. pickle.load(file,*,fix_imports=True, encoding="ASCII", errors="strict")
    必須パラメータfileは、バイナリ読み取り可能モード、すなわちrbで開く必要があります.その他はオプションです.
        3. pickle.dumps(obj):カプセル化されたオブジェクトをバイトオブジェクトとして返し、ファイルに書き込む必要はありません.
        4. pickle.loads(bytes_object):カプセル化されたオブジェクトをバイトオブジェクトから読み出し、返します.
         
    pickleモジュールでは、3つの例外が発生する可能性があります.
        1. PickleError:パッケージングおよびパッケージング時に発生する異常クラス、Exceptionから継承
        2. PicklingError:カプセル化できないオブジェクトに遭遇したときに発生する異常は、PickleErrorから継承されます.
        3. UnPicklingError:オブジェクトのカプセル化中に発生した例外.PickleErrorから継承
     
    pickleの適用例:
    import pickle  
    
    
    
    with open("my_profile.txt", "wb") as myprofile:  
    
        pickle.dump({"name":"AlwaysJane", "age":"20+", "sex":"female"}, myprofile)
    
    
    
    with open("my_profile.txt", "rb") as get_myprofile:
    
        print (pickle.load(get_myprofile))
    
        
    import pickle 
    
    
    
    class Profile:
    
        name = "AlwaysJane"
    
    
    
    pickledclass = pickle.dumps(Profile)
    
    print (pickledclass)
    
    print (pickle.loads(pickledclass))

    理解が十分ではないので、大神たちに間違いを指摘してほしい...
    公式リファレンス:https://docs.python.org/3.3/library/pickle.html