Day15ピクルスシリアライゼーションおよびデシリアライゼーション(すべてのデータタイプがバイトストリームに変換することができる)、JSONモジュール(典型的には、音声通話用)

1.pickleシーケンシングモジュール

バイト標的に任意の配列を#dumps
#loads任意の元のデータをバイト単位にデシリアライズされた
ファイルのようなオブジェクト(すなわち、ファイル・オブジェクト)への標的配列の後に書かれた#dump
ファイルのようなオブジェクト(すなわち、ファイル・オブジェクト)#load内容アウトは、元のデータがにデシリアライズされます

#Pythonの任意のデータ型は、バイトストリームにピクルス行の文字列で変換することができます

1.1任意のオブジェクトの配列にダンプバイト

 

インポートピクルスモジュール=>モジュール。メソッド()
インポートピクルス
 
LST = [1,2,3,4,4,5 ] 
RES = pickle.dumps(LST)
 プリント(RES、タイプ(RES))
#B「\ X80に\ X03] q個の\ X00(K \ x01K \ x02K \ x03K \ x04K \ x04Kの\ x05e。 '<クラス'はバイト>

 1.2原データのいずれかがバイトにデシリアライズされます

RES = pickle.loads(RES)
 プリント(RES、タイプ(RES))
 #1 [1、2、3、4、4、5] <クラスのリスト」>

#のエンコードは、シリアル化を可能にデコード?
「」「だけの文字列が符号化又は復号化、データの種類等コンテナせずに使用することができる。」「」
RES = lst.encode(「UTF-8」) 印刷(RES)

1.3ファンクションシリアル化の#

DEF FUNC():
     印刷私は女の子、ツバメ、趙魏、フェアプリンセスだった
    
FUNC() 
私は女の子、ツバメ、趙魏、フェアプリンセスだった

シリアライズされたバイトストリーム 
RES = ピクルス。ダンプ(FUNC)
 を印刷(RES)
B '\ X80 \ x03c__main __ \ nfunc \ NQ \ xOO' 

、元のバイトストリーム型復元するデータをデシリアライズさ 
RESが= pickle.loads(RES)
 を印刷(RES)
<機能0x00000000004F1E18 FUNC> AT 
RES()
私は女の子、ツバメ、趙魏、フェアプリンセスでした

#ピクルスは、データのシリアル化のすべての行上にあってもよいです

イテレータシリアライズ 
ITは、ITER(レンジ(10 = ))  
 からのコレクションのインポートイテレータ、反復処理可能
 印刷(でisinstance(IT、イテレータ))
 
RES = pickle.dumps(IT)
RES = pickle.loads(RES)
 について I において:RES
     プリント(I)
0 1 2 3 4 5 6 7。 8。 9。 すべてのデータタイプがピクルスモジュールによってシリアル化することができます。

1.4

#dump標的配列がファイルのようなオブジェクト(すなわち、ファイル・オブジェクト)に書き込まれる
ファイルのようなオブジェクト(すなわち、ファイル・オブジェクト)の内容を#load出て、元のデータをにデシリアライズされ

それはITERを=(範囲(10 )) オープンと" ceshi.pkl "、MODE = " WB " :FPなど)
    pickle.dump(それは、FP)

開く(" ceshi.pkl "、MODE = " RB " ) FPとして:
    RES = pickle.load(FP)

プリント(RES)
<0x000000000221CB90でrange_iteratorオブジェクト> 
のための I におけるRES:
     プリント(I) 

0 1 2 3 4 56 7 8 9 
#概要:連続ダンプ負荷

2. JSON

「」 " 
データモジュールは、缶型変換は、JSONは、以下:INTフロートBOOL STRリストタプル辞書をなし8つのデータの種類をシリアル化することができ
、JSONデータ型が提案されている異なる言語間でのデータ交換を形成する
バイナリワードが返されるピクルスデータの伝送及び記憶のために使用されるスロットル、

JSON文字列配列に
バイトストリームのシーケンスに漬物
「」 "
インポートJSONの
 #のハンドオーバの種類との間のシリアライゼーションおよびデシリアライゼーション、文字列や他のデータのダンプとペアをロードし、 
DIC = { 名前年齢:8、セックス"" 男性" " 家族":[ ' '' ' ]}
シリアライズ
'' ' 
ensure_ascii = Trueのあなたは、中国= Falseのensure_asciiの表示したい場合は
、ASCIIに応じて、デフォルト(辞書のキーのsort_keys = Trueのソートを)昇順で
'' ' 
RES = JSON。ダンプ(DIC、ensure_ascii = Falseを、sort_keys =真の)
 印刷(RES、タイプ(RES))
{ "年齢" :. 8、 "ファミリー":[ "お父さん"、 "ママ"]、 "名": "黄"、 "セックス": "男性"} <クラスのSTR '> シリアル化解除 
RESの= json.loads(RES)
 を印刷(RES、タイプ(RES))
{'年齢':。8、'家族':['父''母']'名「:」黄「」セックス『:』男'} <クラスの辞書'>
データの記憶および検索に使用される対を、2.1dumpとロード
オープンと(" ceshi001.json "、MODE = " W "、エンコード= " UTF-8 " )FPとして:
    json.dump(DIC、FP、ensure_ascii = False)が

オープン(と" ceshi001.json "、MODE = " R "エンコード= " UTF-8 " )FPとして:
    RES = json.load(FP)
{ '名前': '黄文'、 '年齢':8、 '性別': '男性'、 '家族' :[ '爸爸'、 '妈妈']} <クラスの辞書'> 
印刷(RES、タイプ(RES))

二つのモジュールのピクルスと2.2json差

JSON 
「」「
連続ダンプかもしれませんが、唯一のロードうち、すべてのデータを非直列化され、データエラーたら
、この欠点に向け、負荷が解決するのに使用することができる
」「」
DICは = { A :1、" B ":2 } 
オープン(と" ceshi002.json "、MODE = " W "、エンコード= " UTF-8 " )FP AS:
    json.dump(DIC、FP)
    fp.write(' \ N- ' 
    JSON .dump(DIC、FP)
    fp.write(' \ N- '

印刷" <===>" 
を開く(と" ceshi002.json "MODE = " R&LT "エンコード= " UTF-8 " )FP AS:
     #1 RES = json.load(FP)エラー
    のために   I におけるFP:
        デシリアライズに、行を読み取ります辞書は、リサイクルした。 
        RES = json.loads(I)
         プリント(RES、タイプ(RES))
{ '' :. 1、 'B':2} <クラスの辞書'> { '':。1 、 'B':2} <クラスの辞書'>
#1 ピクルス
'' ' 
允许连续ダンプ、也允许连续負荷
''' 
インポートピクルス
DIC = { ' ':3、" B ":4 } 
開く(" ceshi003.pkl "、MODE = " WB " )FPとして:
    pickle.dump(DIC、FP)
    pickle.dump(DIC、FP)
    pickle.dump(DIC、FP)
    pickle.dump(DIC、FP) オープンと" ceshi003.pkl "、MODE = " RB " FPとして)
    ''」の
    RES =ピクルス。負荷(FP) 
    プリント(RES)

    pickle.loadの=のRESは(FP)
    を印刷(RES)
    RES = pickle.load(FP)
    を印刷(RES)
    RES = pickle.load(FP)
    を印刷(RES)
    '' ' 
    #1 RES = pickle.load(FP) 
    印刷(RES) #

    あなたはすべてのデータを1時間を出すことができれば
    。試みるとし... ..それはマルチコールだったというエラーを抑制以外
    のtry しばらく真:
            RES = pickle.load(FP)
             印刷(RES)を
     除くパス
{ 'A' :. 3、 'B' :. 4} { 'A' :. 3、 'B' :. 4} { 'A' :. 3、 'B' :. 4} { 'A' :3、'B':4}
 要約:
#JSONと二つのモジュール間のピクルス差は:
(1)データを入力したJSON STR後にシリアル化され、すべてのプログラミング言語が識別され、
   のみ(BOOLフロートINT)(STR辞書なしリストタプル)
   JSON負荷が連続的であることはできないが、すべてのデータは、のうちいずれか
のデータ・タイプはバイトピクルスシリアライズされた後(2)
   のみ記憶Pythonの間の伝送のために、データのすべてのタイプを変換することができる。
   データの漬物ロード連続、複数のセット単一のファイルにで
 
 

 

 
 
 

 

















 

おすすめ

転載: www.cnblogs.com/longerandergou/p/10959464.html