1.&直列化復元の手順は何ですか?
シリアル化:変換辞書などのオブジェクトのインスタンスのリストには、コンテンツタイプ文字列を処理します。
文字列辞書、リスト、オブジェクト・クラスのインスタンスなどにコンテンツを変換するプロセス:デシリアライズ
PS:Pythonの共通データ構造コンテナと呼ぶことができます。配列(例えばリストやタプルなど)、マッピング(例えば辞書のような)との組(セット)は、3つの主なコンテナです。
シーンワン:私たちは、どのようにPythonで別の意志機能にプログラムを使うのか?
方法の一つ:ファイルに機能して、ファイルから読み出し、その後、別のPythonプログラム。
シーン二つは:今すぐ文字列辞書にファイルを変換する方法を読み出すに曲がりますか?
方法2:はeval()関数:文字列str式は有効なものとして評価され、その結果を返しますが、リスクがあるされ、strがpythonの推奨直列化復元中のデータ構造に変換しました。
シリアライゼーションは、STR(DIC)からDICになることであるDIC STR(DIC)およびデシリアライゼーションプロセスになるプロセスです。
2.彼らはシリアライズを使用したいのはなぜ?
シーケンスの目的:
1.カスタムオブジェクトので、永続ストレージの何らかの形(例えばメモリへのメモリからハードディスク等)
2.オブジェクトがある場所から別の場所に渡されます
プログラムのメンテナンス性の向上のために3。
二つのモジュールの順序:
JSON:(辞書など、リスト)データ型の文字列(文字列)とPython変換
ピクルス:変換とPythonのタイプとの間のデータの特定のタイプのためのPython
3.json
JSONはECMAScriptのサブセットに基づいて、軽量データ交換フォーマットです。python3 JSONモジュールは、JSONにエンコードとデコードデータに使用することができます。
Pythonの自然:文字列による文字列の値を二重引用符は、二つの機能が含まれています。
Pythonオブジェクト - > JSON:json.dumps(Pythonオブジェクト)
json-> Pythonオブジェクト:json.loads(JSON文字列)
json.dumps():エンコードされたデータは、ハードディスクにMySQLの文字列またはバイナリデータ形式で格納されています。
ダンプ:操作方法は、すなわち型STRの変数に変換し、端末に出力される
ダンプ:ファイル操作の方法であって、特定操作json.dump(辞書、オープン(「テスト」、「W 」))
json.loads():データを復号化する、文字列に抽象(Pythonオブジェクト)のデータ内容を変換します。
そして結果json.loadのjson.loadsは、ダンプを出力をデシリアライズされ、シーケンスまたはファイルの出力端子をダンプしています。
Pythonオブジェクト(基本データ型):int型、float型、STR、リスト、タプル、辞書
需要:連載では、ファイルに保存された文字列を辞書情報、test1.txtという変換しました。
EX1:test1.txtというf.write()ファイルの書き込みシーケンスのダンプと()関数で、。
インポートJSONの
情報 = {
' 名前':' ウェンディ' 、
' 年齢':22である
}
F =オープン(" test1.txtという"、' W ' )
#1 から辞書情報に文字列を変換json.dumps(情報)ハードディスクメモリ・プロセスと呼ばれる直列化に保存された
#の直列化は、単純なクロスプラットフォームのデータ交換に対処することができ、機能をシリアライズすることはできませんダンプ
f.write(json.dumps(情報))
f.close()を
EX2:ダンプ()関数のシリアル化と直接json.dumpは()test1.txtというファイルを書き込みます。
インポートのJSON
情報 = {
' 名前':' ウェンディ' 、
' 年齢':22
}
F =オープン(" test1.txtという"、' W ' )
#等于f.write(json.dumps(情報))
json.dump(情報、F)
f.close()
4.pickle
漬物の負荷、負荷ダンプは、最初のピクルスとJSONの違いのため、操作を使用してダンプします。
4.1ピクルスとJSONシリアライゼーションおよび動作の逆シリアル化の両方を達成することができます。
4.2暗号化された方法で書かれたファイル、ピクルスに書き込みます。バイナリ形式で記述されたファイルを開くには、「WB」。
4.3ピクルスは、クラスが作成されたファイルオブジェクトへの入力を非直列化することができます。
4ピックル機能モジュール:ダンプ(シリアル化、預金)、ダンプ、負荷(デシリアライズ、読書)、負荷
インポートピクルス
クラスABC:
A = 10
DEF __init__を(セルフ、M、N-):
self.m = M
self.n = N-
ABC = ABCは、(1,2 )
RES = pickle.dumps(ABC) #任意シリアライズピクルスようなタイプ:クラスインスタンスのシーケンス
back_res = pickle.loads(RES)プリント(RES)
プリント(back_res)
プリント(back_res.a)
#1 の結果があることを示す
B ' \ X80 \ x03c__main __ \ NABC \ NQ \ xOO)\ x81q \ X01をQ} \ X02(X- \ X01 \ xOO \ xOO \ x00mq \ x03K \ x01X \ X01 \ xOO \ xOO \ x00nq \ x04K \ x02ub。'
< __main__0x000001D7A0B31048で.ABCオブジェクト>