ホームページ >バックエンド開発 >Python チュートリアル >Python での Json モジュールと Pickle モジュールの使用
データのシリアル化と逆シリアル化は一般的なデータ操作です。Python には、開発者がデータのシリアル化操作を実装しやすくするための 2 つのモジュール ( json モジュールと pickle##) が用意されています。 # 個のモジュール。これら 2 つのモジュールの主な違いは次のとおりです:
json はテキスト シリアル化形式であるのに対し、pickle はバイナリ シリアル化形式です。json は直感的に読み取ることができますが、pickle は読み取ることができません。#json は相互運用可能であり、Python システムの外部で広く使用されていますが、pickle は Python に固有です;
デフォルトでは、json は Python の組み込み型のサブセットのみを表すことができ、カスタム クラスを表すことはできません。
しかし、pickle は多数の Python データ型を表すことができます。
推奨学習: Json モジュールJson は軽量なデータ交換形式であり、送信データ量が少なく、データ形式の解析が容易であるという特徴から、さまざまなシステム間の対話的な操作に広く使用されています。データ。これには、次のような一般的に使用される関数が複数含まれています。
dumps() 関数dumps() 関数は、Python オブジェクトを Json 文字列にエンコードできます。例:
# 字典转成json字符串 加上ensure_ascii = False以后, 可以识别中文, indent = 4 是间隔4个空格显示 import json d = { '小明': { 'sex': '男', 'addr': '上海', 'age': 26 }, '小红': { 'sex': '女', 'addr': '上海', 'age': 24 }, } print(json.dumps(d, ensure_ascii = False, indent = 4)) # 执行结果: { "小明": { "sex": "男", "addr": "上海", "age": 26 }, "小红": { "sex": "女", "addr": "上海", "age": 24 } }dump() function
dump() 関数は、Python オブジェクトを json 文字列にエンコードし、自動的にファイルに書き込むことができます。ファイルを個別に書き込む必要はありません。 。例:
# 字典转成json字符串, 不需要写文件, 自动转成的json字符串写入到‘ users.json’ 的文件中 import json d = { '小明': { 'sex': '男', 'addr': '上海', 'age': 26 }, '小红': { 'sex': '女', 'addr': '上海', 'age': 24 }, }# 打开一个名字为‘ users.json’ 的空文件 fw = open('users.json', 'w', encoding = 'utf-8') json.dump(d, fw, ensure_ascii = False, indent = 4)loads() 関数
loads() 関数は、json 文字列を Python データ型に変換できます。例:
# 这是users.json文件中的内容 { "小明": { "sex": "男", "addr": "上海", "age": 26 }, "小红": { "sex": "女", "addr": "上海", "age": 24 } } #!/usr/bin / python3# 把json串变成python的数据类型 import json# 打开‘ users.json’ 的json文件 f = open('users.json', 'r', encoding = 'utf-8')# 读文件 res = f.read() print(json.loads(res)) # 执行结果: { '小明': { 'sex': '男', 'addr': '上海', 'age': 26 }, '小红': { 'sex': '女', 'addr': '上海', 'age': 24 } }load() function
load() には、loads() と同様の関数があります。load() 関数は、json 文字列を Python データ型に変換できます。違いは、前者のパラメータはファイル オブジェクトであり、このファイルを個別に読み取る必要がないことです。例:
# 把json串变成python的数据类型: 字典, 传一个文件对象, 不需要再单独读文件 import json# 打开文件 f = open('users.json', 'r', encoding = 'utf-8') print(json.load(f)) # 执行结果: { '小明': { 'sex': '男', 'addr': '上海', 'age': 26 }, '小红': { 'sex': '女', 'addr': '上海', 'age': 24 } }Pickle モジュール
Pickle モジュールには Json モジュールと同様の関数があり、さらに 4 つの関数 (dump()、dumps()、loads) も含まれています。
ダンプとダンプの違いは、前者はオブジェクトをシリアル化するのに対し、後者はオブジェクトをシリアル化してファイルに保存することです。ロードとロードの違いは、前者はシリアル化された文字列を逆シリアル化するのに対し、後者はシリアル化された文字列をファイルから読み取って逆シリアル化することです。
dumps() 関数dumps() 関数は、特別な形式のデータを、Python 言語でのみ認識される文字列に変換できます。例:
import pickle# dumps功能 import pickle data = ['A', 'B', 'C', 'D'] print(pickle.dumps(data)) b '\x80\x03]q\x00(X\x01\x00\x00\x00Aq\x01X\x01\x00\x00\x00Bq\x02X\x01\x00\x00\x00Cq\x03X\x01\x00\x00\x00Dq\x04e.'dump() 関数
dump() 関数は、データを特別な形式の Python 言語でのみ認識される文字列に変換し、ファイルに書き込むことができます。 。例:
# dump功能 with open('test.txt', 'wb') as f: pickle.dump(data, f) print('写入成功')
書き込み成功
loads() 関数は、pickle データを Python データ構造に変換できます。例:
# loads功能 msg = pickle.loads(datastr) print(msg) ['A', 'B', 'C', 'D']load() 関数
load() 関数は、データ ファイルからデータを読み取り、Python データ構造に変換できます。例:
# load功能with open('test.txt', 'rb') as f: data = pickle.load(f) print(data) ['A', 'B', 'C', 'D']
この記事は
python チュートリアル以上がPython での Json モジュールと Pickle モジュールの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。