ホームページ  >  記事  >  バックエンド開発  >  「ゼロから学ぶ Python」シリーズでの pickle モジュールのデータ オブジェクトのカプセル化と解凍方法についての簡単な説明

「ゼロから学ぶ Python」シリーズでの pickle モジュールのデータ オブジェクトのカプセル化と解凍方法についての簡単な説明

WBOY
WBOYオリジナル
2016-06-16 08:44:101142ブラウズ

カプセル化は、Python データ オブジェクトをバイト ストリームに変換するプロセスです。アンパックは、バイト ファイルまたはバイト オブジェクトのバイト ストリームを Python データ オブジェクトに変換するものではありません。データソース。主に以下を含むほぼすべての Python データ オブジェクトをカプセル化および解凍できます。

None、True、False
整数、浮動小数点数、複素数
文字列、バイト、ByteArray オブジェクト
カプセル化されたオブジェクトを含むタプル、リスト、セット、辞書
モジュール内 定義された関数モジュールのトップレベル
モジュールのトップレベルで定義された組み込み関数
モジュールのトップレベルで定義されたクラス
__dict__ または __getstate__() の呼び出しの結果カプセル化できるクラスのインスタンスです

pickle モジュールで一般的に使用されるメソッドは次のとおりです:

1. pickle.dump(obj, file,protocol=None,)

必須パラメータ obj は、カプセル化されるオブジェクトを表します

必須パラメータ ファイルは、obj によって書き込まれるファイル オブジェクトを表します。ファイルはバイナリ書き込み可能モード、つまり "wb" で開く必要があります。

オプションのパラメーターのプロトコルは、ピックラーで使用されるプロトコルを示します。サポートされているプロトコルは 0、1、2、および 3 です。デフォルトのプロトコルは、Python 3 で追加されたプロトコル 3 です。その他のプロトコルの詳細については、リファレンス ドキュメントを参照してください。 🎜>

2. pickle.load(file,*,fix_imports=True, encoding="ASCII",errors="strict")

必須パラメータ ファイルはバイナリ読み取り可能モード、つまり「rb」で開く必要があります。他のパラメータはオプションです

3. pickle.dumps(obj): カプセル化されたオブジェクトをバイト オブジェクトの形式で返します。ファイルに書き込む必要はありません

4. pickle.loads(bytes_object): bytes オブジェクトからカプセル化されたオブジェクトを読み取り、

を返します。

pickle モジュールには 3 つの例外が考えられます:

1. PickleError: Exception

を継承した、カプセル化および解凍時に発生する例外クラス

2. PicklingError: PickleError

から継承された、カプセル化できないオブジェクトに遭遇したときに発生する例外

3. UnPicklingError: オブジェクトの解凍プロセス中に発生する例外。PickleError

から継承されます。

ピクルスの応用例:

コードをコピー コードは次のとおりです:
ピクルをインポート
myprofile として open("my_profile.txt", "wb") を使用:

pickle.dump({"name":"AlwaysJane", "age":"20+", "sex":"女性) "}、私のプロフィール)

with open("my_profile.txt", "rb") as get_myprofile:

print (pickle.load(get_myprofile))

コードをコピー コードは次のとおりです:
ピクルをインポート
クラスプロフィール:

名前 = "AlwaysJane"

pickledclass = pickle.dumps(Profile)

print (pickledclass)
print (pickle.loads(pickledclass))

よく理解できていないので、専門家が私の間違いを正してくれることを願っています。 。 。

参考資料を添付してください

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。