序列化模块--json模块--pickle模块-shelve模块
生活随笔
收集整理的這篇文章主要介紹了
序列化模块--json模块--pickle模块-shelve模块
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
什么叫序列化?
序列化是指把內存里的數據類型轉變成字符串,以使其能存儲到硬盤或通過網絡傳播到遠程,因為硬盤或網絡傳輸時只能接受bytes
例:
把內存數據 轉成字符
# data ={
# 'roles':[
# {'role':'monster','type':'pip','life':50},
# {'role':'hero','type':'關羽','life':80}
# ]
# }
#
# f = open("game_status",'w')
# f.write(str(data))
例:把字符轉成 內存數據
f=open("game_status",'r')
d =f.read()
d =eval(d) #eval能把字符串轉化成各種數據類型
print(d['roles'])
'''把內存數據 轉成字符,叫序列化
把字符轉成 內存數據 叫反序列化'''
json 模塊
# import json
# data ={
# 'roles':[
# {'role':'monster','type':'pip','life':50},
# {'role':'hero','type':'關羽','life':80}
# ]
# }
# d = json.dumps(data) #.dumps是將數據轉成字符串
# print(d,type(d))
# f = open("test.json","w")
# json.dump(data,f) #dump直接轉成字符串,并寫入文件
# d = json.dumps(data) #將數據轉成字符串
# d2 = json.loads(d) #加載字符串,并轉成字典賦值給d2
# print(d2['roles']) #打印字典d2['roles']
# f = open("test.json","r") #打開文件test.json
# data =json.load(f) #加載字符串f并轉成字典,賦值 data
# print(data['roles'],type(data))
'''只是把數據類型轉成字符串存到內存里的意義?
json.dumps json.loads
1、把你的內存數據 通過網絡 共享給遠程其它人
2、字義了不同語言的之前的交互規則
1、純文本,壞處,不能共享復雜的數據類型
2、xml,壞處,占空間大
3、json,簡單,可讀性好'''
import json
例:
# import json
# data ={
# 'roles':[
# {'role':'monster','type':'pip','life':50},
# {'role':'hero','type':'關羽','life':80}
# ]
# }
# d = json.dumps(data) #.dumps是將數據轉成字符串
# print(d,type(d))
# f = open("test.json","w")
# json.dump(data,f) #dump直接轉成字符串,并寫入文件
# d = json.dumps(data) #將數據轉成字符串
# d2 = json.loads(d) #加載字符串,并轉成字典賦值給d2
# print(d2['roles']) #打印字典d2['roles']
# f = open("test.json","r") #打開文件test.json
# data =json.load(f) #加載字符串f并轉成字典,賦值 data
# print(data['roles'],type(data))
'''只是把數據類型轉成字符串存到內存里的意義?
json.dumps json.loads
1、把你的內存數據 通過網絡 共享給遠程其它人
2、字義了不同語言的之前的交互規則
1、純文本,壞處,不能共享復雜的數據類型
2、xml,壞處,占空間大
3、json,簡單,可讀性好'''
import json
# import json
# data ={
# 'roles':[
# {'role':'monster','type':'pip','life':50},
# {'role':'hero','type':'關羽','life':80}
# ]
# }
# d = json.dumps(data) #.dumps是將數據轉成字符串
# print(d,type(d))
# f = open("test.json","w")
# json.dump(data,f) #dump直接轉成字符串,并寫入文件
# d = json.dumps(data) #將數據轉成字符串
# d2 = json.loads(d) #加載字符串,并轉成字典賦值給d2
# print(d2['roles']) #打印字典d2['roles']
# f = open("test.json","r") #打開文件test.json
# data =json.load(f) #加載字符串f并轉成字典,賦值 data
# print(data['roles'],type(data))
'''只是把數據類型轉成字符串存到內存里的意義?
json.dumps json.loads
1、把你的內存數據 通過網絡 共享給遠程其它人
2、字義了不同語言的之前的交互規則
1、純文本,壞處,不能共享復雜的數據類型
2、xml,壞處,占空間大
3、json,簡單,可讀性好'''
import json
# f =open("json_file",'w',encoding='utf-8')
#
# d={'name':'alex','age':22}
# l=[1,2,3,4,'rain']
# json.dump(d,f) #dump字典到文件
# json.dump(l,f) #dump列表到文件,dump時沒問題,但lodad時會報錯。因為dump了多次不同類型的數據
f =open("json_file",'r',encoding='utf-8')
print(json.load(f)) #載入dump多次的不同數據類型會報錯。
Pickle模塊
import pickle
# d ={'name':'alex','age':22}
#
# l =[1,2,3,4,'rain']
# pk = open("data.pkl",'wb') #bytes,寫入文件模式必須必成wb
# pickle.dump(d,pk)
f= open("data.pkl","rb")
d =pickle.load(f)
print(d)
'''json支持的序列化類型
str,int,tuple,list,dict
pickle支持的序列化類型
支持python里的所有的數據類型
只能在python里使用'''
shelve模塊
shelve支持所有的數據類型,只支持python,一般都用shelve模塊,很少用pickle模塊
import shelve
f = shelve.open('shelve_test') #打開一個文件
names = ['alex','rain','test']
info ={'name':'alex','age':22}
f['names'] =names #持久化列表
f['info_dic']=info
f.close()
轉載于:https://www.cnblogs.com/anzhangjun/p/8447915.html
總結
以上是生活随笔為你收集整理的序列化模块--json模块--pickle模块-shelve模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求一个好听女孩子的名字!
- 下一篇: 黄山风景区宏村门票价格