Pythonのシーケンス化モジュールpickleとjson
8320 ワード
1シーケンス化の概念:
シーケンス化とは、メモリ内のデータをbytesタイプに変換し、ハードディスクに格納したり、ネットワークを介して転送したりできるようにすることです.
2シーケンス化された適用シーン:
簡単な例は、私たちがゲームをしている間に、急用があったら、一時停止したり、ゲームを閉じたりして、問題が解決してからゲームを続けます.これで遊び直す必要はありません.この場合、現在のゲームに関連するデータをハードディスクに格納し、次のゲームが始まるとハードディスクからこれらのデータを読み出す必要があります.
3 pickleモジュール
4 jsonモジュール
5 pickleとjsonの違い
pickle:利点:Python独自で、Pythonのすべてのデータ型の欠点をサポートする:Pythonでしか使用できず、メモリの消費量が大きい
json:利点:マルチ言語をサポートし、異なるプログラミング言語間でjsonによるデータ交換が可能で、メモリを占有する小さな欠点:int/string/list/dictなどの一般的なデータ型しか格納できない
シーケンス化とは、メモリ内のデータをbytesタイプに変換し、ハードディスクに格納したり、ネットワークを介して転送したりできるようにすることです.
2シーケンス化された適用シーン:
簡単な例は、私たちがゲームをしている間に、急用があったら、一時停止したり、ゲームを閉じたりして、問題が解決してからゲームを続けます.これで遊び直す必要はありません.この場合、現在のゲームに関連するデータをハードディスクに格納し、次のゲームが始まるとハードディスクからこれらのデータを読み出す必要があります.
3 pickleモジュール
import pickle
dic = {
"name":"zhangsan",
"age":22
}
li = ["a",23,"asdf"]
d_dic = pickle.dumps(dic) # dumps bytes
print(d_dic)
print(type(d_dic))
#
# b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x08\x00\x00\x00zhangsanq\x02X\x03\x00\x00\x00ageq\x03K\x16u.'
#
print(pickle.loads(d_dic)) # loads
# {'name': 'zhangsan', 'age': 22}
# dump
f = open("pic.pk","wb")
pickle.dump(dic,f)
pickle.dump(li,f)
#load
f = open("pic.pk","rb")
d = pickle.load(f)
l = pickle.load(f)
print(d) # {'name': 'zhangsan', 'age': 22}
print(l) # ['a', 23, 'asdf']
: dump , load ,
4 jsonモジュール
import json
dic = {
"name":"zhangsan",
"age":22
}
li = ["a",23,"asdf"]
# json dump
j_dic = json.dumps(dic)
print(type(j_dic)) #
print(j_dic) # {"name": "zhangsan", "age": 22}
d = json.loads(j_dic)
print(type(d)) #
print(d) # {"name": "zhangsan", "age": 22}
# dump
f = open("js.json","w")
json.dump(dic,f)
f = open("js.json","r")
d = json.load(f)
print(d) # {'name': 'zhangsan', 'age': 22}
print(type(d)) #
:json dump , , ,dump , load , dump 。 dump
5 pickleとjsonの違い
pickle:利点:Python独自で、Pythonのすべてのデータ型の欠点をサポートする:Pythonでしか使用できず、メモリの消費量が大きい
json:利点:マルチ言語をサポートし、異なるプログラミング言語間でjsonによるデータ交換が可能で、メモリを占有する小さな欠点:int/string/list/dictなどの一般的なデータ型しか格納できない