pickleモジュールストレージデータ


機械学習では,訓練されたモデルを格納することがしばしば必要であり,意思決定時にモデルを直接読み出し,モデルを再訓練する必要がなく,時間を大幅に節約できる.Pythonが提供するpickleモジュールは、オブジェクトをシーケンス化してディスクに保存し、必要に応じて読み出すことができ、どのオブジェクトでもシーケンス化操作を実行することができます.
Pickleモジュールで最も一般的な関数は次のとおりです.
(1)pickle.dump(obj, file, [,protocol])
関数の機能:objオブジェクトを開いたfileにシーケンス化して格納します.
パラメータの説明:
  • obj:シーケンス化したいobjオブジェクト.
  • file:ファイル名.
  • protocol:使用するプロトコルをシーケンス化します.この項目が省略されている場合、デフォルトは0です.負またはHIGHEST_の場合PROTOCOLは、最高のプロトコルバージョンを使用します.

  • (2)pickle.load(file)
    関数の機能:fileのオブジェクトをシーケンス化して読み出します.
    パラメータの説明:
  • file:ファイル名.

  • (3)pickle.dumps(obj[, protocol])
    関数の機能:objオブジェクトをファイルに格納するのではなくstring形式にシーケンス化します.
    パラメータの説明:
  • obj:シーケンス化したいobjオブジェクト.
  • protocal:この項目が省略されている場合、デフォルトは0です.負またはHIGHEST_の場合PROTOCOLは、最高のプロトコルバージョンを使用します.

  • (4)pickle.loads(string)
    関数の機能:stringからシーケンス化前のobjオブジェクトを読み出す.
    パラメータの説明:
  • string:ファイル名.

  • 【注】dump()は、load()と比較してdumps()およびloads()にもう1つの能力を有する.dump()関数は、複数のオブジェクトを連続的に同じファイルにシーケンス化して格納し、load()を呼び出して、これらのオブジェクトを同じ順序で逆シーケンス化して読み出すことができる.
    ###コード例
    #  pickle       ,           
    import pickle
    dict={
        'xiaoming':23,
        'xiaowang':24,
        'xiaoli':21
    }
    file=open('class.txt',mode='wb')
    pickle.dump(dict,file)
    file.close()
    file=open('class.txt',mode='rb')
    newDict=pickle.load(file)
    file.close()
    print(type(newDict))  #