フルスタックのチェックポイントのPythonのシーケンス--20-

シリアライズはじめに

何?

シリアル化:→データ転送メカニズム文字列の
デシリアライズ:文字列データ構造→

用途:

データの保存
、インターネット上で送信を

 

モジュールを使用します:

  • 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)

 

おすすめ

転載: www.cnblogs.com/zxw-xxcsl/p/12660915.html