シリアライズはじめに
何?
シリアル化:→データ転送メカニズム文字列の
デシリアライズ:文字列データ構造→
用途:
データの保存
、インターネット上で送信を
モジュールを使用します:
- josn
- 漬けます
- シェルフ
JSON:
数値、文字列、リスト、辞書、先祖に変換することができ
、共通のシリアル化形式
だけの小さな部分はJSONによって、文字列データ型に変換することができます。
ピクルス:
Pythonですべてのデータは、文字列に変換することができます
のみ理解できるのpython連載コンテンツピクルス
依存Pythonコードを直列化復元します
棚上げ:
シリアル化ハンドル
ハンドル便利な操作を使用して、
JSON
使用して、ダンプとロードはメモリに変換しました:
D =辞書([(1、。' A ')、(2、' B ')、(3、' D ' )]) プリント(型(D)、D) #<クラスの辞書'> {1' A '2' B '3' D '} S_D = json.dumps(D) プリント(型(S_D)、S_D) #<クラス' STR '> { "1" : "A"、" 2 ":" B "" 3 ":" D「} 文字列型、二重引用符で囲まれた文字 dic_d = json.loads(S_D) プリント(型(dic_d)、dic_d) #<クラスの辞書'> {' 1 「:」「」2 『:』 B「」3 『:』 D「} キー文字ではなく、整数の先頭に
書き込まれたダンプとロードファイルを使用してのファイルから読み込みます。
(F =オープン' FFF '、モード= ' W ' =コード、' UTF-8 ' ) json.dump(D、F) f.close() fは =オープン(' FFF '、モード= ' R ' ) 、FD = json.load(F) 印刷(" %sのFD:%S)"%(タイプ(FD)、FD)) f.close() 、D = {1 ' 这个'、2 ' 哪个' } F =オープン(' FFF '、MODE = ' W '、=エンコード' UTF-を。8 ' ) json.dump(D、F、ensure_ascii = TRUE) #は、中国が含まれている、ファイルの内容のハッシュに書かれている #文字はエンコードされたファイルに書き込まれtrueに #をfalseにコンテンツファイルが読み取り可能な吸引である f.close() F =オープン(' FFF '、MODE = ' R&LT '、=コード' UTF-を8 ' ) #の 文字エンコードせずに読み出し、システムは、デフォルトの文字を使用し負荷バイナリは、エラーの可能性があり 、FD = json.load(F) 印刷(" :%のS%S FD)"%(タイプ(FD)の、FD)) f.close()を
JSONは何度も書くことはできませんが、ファイル操作とダンプの使用は、負荷が達成するために適合させることができます
#JSONは、複数のライン読み取ることができない、一度だけ書かれた #を、複数の行に書き込まれるだけ複数のダンプのライン、ラインによるリード線、負荷変換用いて書き込むファイルを使用することができる L = [{ 'をK1 ':' 11 ' }、{ ' K2 ':' 22れる' }、{ ' K3 ':' 33である' }] を開くと(' 複数の読み取りの.txt 'MODE = ' W ' =コード、' UTFを-8 ' )AS F: のための D でL: str_dic = JSON。ダンプ(D) f.write(str_dic + ' \ n ' ) d_listの = [] (オープンと' 多次读写の.txt '、モード= 'R '、=コード' UTF-8 ' )、Fとおり ため L にF: DIC = json.loads(l.strip()) d_list.append(DIC)プリント(d_listの)
pikcle
操作JSONと一致しますが、漬物のサポート複数の読み取りと書き込み、およびすべてのデータ構造
インポートピクルス インポート時間 D =辞書を([(1、' A ')、(2、' B ')、(3、' D ' )]) dic_str = pickle.dumps(D) プリント(型(dic_str)、dic_str ) #<クラスのバイト> B「\ X80 \ X03} Q \ xOO(K \ x01X \ X01 \ xOO \ xOO \ x00aq \ x01K \ x02X \ X01 \ xOO \ xOO \ x00bq \ x02K \ x03X \ X01 \ xOO \ xOO \ x00dq \ x03u。「 D2は= pickle.loads(dic_str)が 印刷(D2) #のバイナリ変換の結果をpickle化されていないので、読み取りと書き込みのモードを使用する必要があり、RB #漬物これは読み書きすることができますアウト オープン(と「pickle_file 」、モード=' WB ' )AS F: pickle.dump(D、F) pickle.dump(time.localtime()、F) #は保存後、ファイルの内容が文字化けしている オープン(と' pickle_file '、MODE = ' RB ' )AS F : D1 = pickle.load(F) D2 = pickle.load(F) 印刷(タイプ(D1)、D1) プリント(型(D2)、D2)
シェルフ
直接ファイルハンドルで操作します
印刷(「:開始棚」 .center(50、「- 」)) インポートザシェルフ F =(shelve.open 「shelve_fileを」)#直接ファイルハンドルが操作されるが、データに格納することができる F [ 「時間」 ] = 時間.localtime() F [ ' 名前' ] = [ ' 日科技連'、' トム'、' Lisan ' ] f.close() shelve.openと(' shelve_file '、ライトバック=真)AS S: S1 = S [ ' 時間' ] #キー値が与えられた存在しない S2 = S [ ' 名前' ] S [ ' 名前' [1] = ' ALTER edit123 ' #をライトバック= Trueのない場合の、戻りませんファイルのリストを変更 印刷(タイプ(S1)、S1の) 印刷(タイプで(S2)、S2)