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 #5 #6 #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の間の伝送のために、データのすべてのタイプを変換することができる。 データの漬物ロード連続、複数のセット単一のファイルにで