1 json模块
序列化:把对象从内存中变为可存储或可执行的内容的过程叫做序列化
先回顾eval()用法:
'''回顾eval'''
dic = {'name': 'zhao',
'age': 27}
lst = [1, 2, 'zhao']
# # 字典-字符转换
s_dic = str(dic)
print(s_dic) #{'name': 'zhao', 'age': 27}
print(type(s_dic)) #<class 'str'>
dic = eval(s_dic)
print(dic) #{'name': 'zhao', 'age': 27}
print(type(dic)) #<class 'dict'>
#列表-字符相互转换
s_lst = str(lst)
print(s_lst) #[1, 2, 'zhao']
print(type(s_lst)) #<class 'str'>
dic = eval(s_lst)
print(lst) #[1, 2, 'zhao']
print(type(lst)) #<class 'list'>
将字典利用json格式存入文件,并读出
# 利用json方法将字典存入文件
with open('json_test_dic.txt', 'w') as f:
dic = {'name': 'zhao', 'age': 27}
# 将字典转为json格式存储
date = json.dumps(dic)
f.write(date)
with open('json_test_dic.txt', 'r') as f:
date = f.read()
dic = json.loads(date)
print(dic) #{'name': 'zhao', 'age': 27}
print(type(dic)) #<class 'dict'>
将列表利用json格式存入文件,并读出
# 利用json方法将列表存入文件
with open('json_test_lst.txt', 'w') as f:
lst = ['name', 'zhao', 'age', 27]
# 将字典转为json格式存储
date = json.dumps(lst)
f.write(date)
with open('json_test_lst.txt', 'r') as f:
date = f.read()
lst = json.loads(date)
print(lst) #['name', 'zhao', 'age', 27]
print(type(lst)) #<class 'list'>
将字典、列表混合数据利用json格式存入文件,并读出
# 测试写入混合数据(列表,字典)
with open('json_test_all.txt', 'w') as f:
dic = {'name': 'zhao', 'age': 27}
lst = ['name', 'zhao', 'age', 27]
# 转为json格式存储
date1 = json.dumps(dic)
date2 = json.dumps(lst)
f.write(date1)
f.write('\n')
f.write(date2)
with open('json_test_all.txt', 'r') as f:
date1 = f.readline()
date2 = f.readline()
dic = json.loads(date1)
lst = json.loads(date2)
print(lst) #['name', 'zhao', 'age', 27]
print(type(lst)) #<class 'list'>
print(dic) # {'name': 'zhao', 'age': 27}
print(type(dic)) # <class 'dict'>
2 .dump() .load()方法:方便
import json
'''测试 .dump()'''
with open('dump_test', 'w') as f:
dic = {'name': 'zhao', 'age': 24}
json.dump(dic, f)
with open('dump_test', 'r') as f:
dic = json.load(f)
print(dic) # {'name': 'zhao', 'age': 24}
print(type(dic)) #<class 'dict'>
3 pickle模块
可以处理函数和类,但是只在Python内通用,还没搞明白。
处理方式与json一模一样,也是dumps放数据,loads取数据