对象的序列化和反序列化
"""
字典能不能写入到文件中???
对象的序列化和反序列化
序列化:把一个对象(列表,字典等) 变成字符串或者字节串
反序列化:从一个字节串或者字符串中还原出一个对象(字典, 列表等)
python中有一个标准库json/pickle模块,可以支持我们做序列化和反序列化
"""
import json
import pickle
from Tools.i18n.pygettext import safe_eval
person = {
'name': '小徐',
'age': 18,
'sex': True,
'friends': ['李白', '韩信'],
'car': {
'brand': 'QQ',
'max_speed': 200
}
}
"""
方法一:转成字符串 - 通过str()类型转换
注意:读的时候使用safe_eval()保障安全性
"""
with open('bb.txt', 'w') as f:
f.write(str(person))
with open('bb.txt') as f:
file = safe_eval(f.read())
print(file, type(file), sep='\n')
"""
方法二 - 通过json进行序列化和反序列化操作
"""
with open('bb.txt', 'w') as f:
json.dump(person, fp=f)
with open('bb.txt') as f:
print(json.loads(f.read()))
"""
方法三 - 通过pickle进行序列化和反序列化
"""
with open('bb.dat', 'wb') as f:
pickle.dump(person, file=f)
with open('bb.dat', 'rb') as f:
print(pickle.loads(f.read()))