python模块之序列化模块
生活随笔
收集整理的這篇文章主要介紹了
python模块之序列化模块
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
序列化
"""序列--字符串序列化--其他數(shù)據(jù)類型轉化為字符串數(shù)據(jù)類型反序列化--字符串轉化為其他數(shù)據(jù)類型 """?
json模塊
"""json 五星好評 數(shù)字 字符串 列表 字典 元組優(yōu)點:通用的序列化格式缺點:只有很少的一部分數(shù)據(jù)類型-->字符串 """?
1,dumps和loads
import json # dumps和loads 操作內存中的數(shù)據(jù) dic = {'k1': 'v1'} print(type(dic), dic) # <class 'dict'> {'k1': 'v1'} str_d = json.dumps(dic) # 序列化 print(type(str_d), str_d) # <class 'str'> {"k1": "v1"} dic_l = json.loads(str_d) # 反序列化 print(type(dic_l), dic_l) # <class 'dict'> {'k1': 'v1'}?
2,dump和load
# dump和load 操作文件中的數(shù)據(jù) 序列化中文的話,要修改默認參數(shù)ensure_ascii=False dic = {'k1': 'v1'} f = open('json_test', 'w', encoding='utf-8') json.dump(dic, f) # 文件序列化入的內容為{"k1": "v1"} f.close() f = open('json_test', encoding='utf-8') # load只能反序列化一次性序列化入文件中的內容,如果多次dump,load時會報錯! ret = json.load(f) print(ret) # {'k1': 'v1'} f.close()?
json一些參數(shù)的用法
dic = {'name': '蔠纈草', 'age': 25, 'hobby': 'read'} str_d = json.dumps(dic) # 序列化 str_d1 = json.dumps(dic, ensure_ascii=False) # 序列化中文要想能看懂內容,要修改參數(shù)ensure_ascii=False print(str_d) # {"age": 25, "name": "\u8520\u7f2c\u8349", "hobby": "read"} print(str_d1) # {"hobby": "read", "name": "蔠纈草", "age": 25}# 特殊格式的序列化 dic = {'name': '蔠纈草', 'age': 25, 'hobby': 'read'} str_d = json.dumps(dic, sort_keys=True, indent=4, separators=(',', ':'), ensure_ascii=False) print(str_d) # 打印內容: """ {"age":25,"hobby":"read","name":"蔠纈草" } """
pickle模塊
"""pickle 序列化為bytes類型優(yōu)點:python中所有的數(shù)據(jù)類型-->字符串缺點:序列化的內容只有python能識別,序列化和反序列化需要相同的環(huán)境。 """?
pickle方法和json的方法相同
import pickle # pickle和json的用法一樣,不同的是序列化之后的值是bytes類型 dic = {'k1': 'v1', 'k2': 'v2'} pd_str = pickle.dumps(dic) print(pickle) # 序列化 打印bytes類型 pl_str = pickle.loads(pd_str) print(pl_str) # 反序列化 dic = {'k1': 'v1', 'k2': 'v2'} f = open('pickle_test', 'wb') pickle.dump(dic, f) # 序列化 寫入的是bytes類型 f.close() f = open('pickle_test', 'rb') ret = pickle.load(f) # 反序列化 print(ret)?
shelve模塊
"""shelve存在序列化句柄使用句柄直接操作,非常方便 """?
shelve只有open方法,打開文件返回一個序列化句柄,通過操作句柄來完成序列化的相關操作。
import shelve f = shelve.open('shelve_test') # 產生序列化句柄 f['key'] = {'k1': 'v1', 'k2': 'v2'} # 操作句柄進行文件序列化寫入 f.close() f = shelve.open('shelve_test') print(f['key']) # 反序列化取值,key必須存在,否則報錯 f.close()?
shelve writeback參數(shù)的用法
f = shelve.open('shelve_test', writeback=False) # 參數(shù)writeback=False 數(shù)據(jù)修改不會生效 f['key']['k3'] = 'v3' # 修改并沒有生效 f.close() f = shelve.open('shelve_test') print(f['key']) # {'k2': 'v2', 'k1': 'v1'} f.close()f = shelve.open('shelve_test', writeback=True) f['key']['k3'] = 'v3' # 修改生效 f.close() f = shelve.open('shelve_test') print(f['key']) # {'k3': 'v3', 'k2': 'v2', 'k1': 'v1'} f.close()?
?
?
轉載于:https://www.cnblogs.com/zxc-Weblog/p/8288982.html
總結
以上是生活随笔為你收集整理的python模块之序列化模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: React的思想
- 下一篇: R语言基础篇——数据对象