程序中的字典都有有独立的数据类型,不能直接按照二进制的方式进行操作
data_serializer/ds01.py
TypeError
解决方案:有两种
1. 通过python提供的标准库,将程序中的数据转换成字符串~进行操作
2. 通过python提供的标准库,将程序中的数据转换成字节(二进制文件)进行操作
(5)操作程序中的字符串数据[特殊:JSON],json一般做数据类型转换
json模块[python提供的标准库]
(6)操作程序中的对象数据[序列化:反序列化] pickle一般用作数据在文件中的交互
pickle模块[python提供的标准库]
json模块:python提供的标准库
*******************************************
#coding:utf-8
#系统标准库json,可以对程序中的数据进行转换
users = {
"admin":{
"username": "admin",
"password": "123",
"nickname": "老王"
}
}
#通过json进行转换
import json
#1.数据类型的转换
#将一个字典数据转换为字符串数据[json字符串]
json_str = json.dumps(users)
print(json_str, type(json_str))
#将一个json字符串数据,转换成json对象[其他语言](字典dict)
json_obj = json.loads(json_str)
print(json_obj,type(json_obj))
#2.类型转换的同时操作文件
#json的方式,将程序中的【变量,列表,集合,字典】写入到文件中:
json.dump(users, open("d2.txt","w"))
#json的方式,将文件中的数据读取到程序中
data = json.load(open("d2.txt"))
******************************************************************
pickle模块,python提供的标准库,序列化的方法
# coding:utf-8
# json方式可以进行程序中数据存储到文件
# 但是json转换的结果是字符串数据~文本数据,对于数据的安全性太低
# json标准库的操作:经常用于 数据类型的转换
# 程序中的数据和文件之间的交互~一般通过二进制操作
# Python标准库提供了很多种二进制操作的方式
# pickle、struct(c/c++)...
users = {
"admin": {
"username": "admin",
"password": "123",
"nickname": "老王"
}
}
import pickle
# 二进制操作方式,将数据存储到文件中
#pickle.dump(users, open("d3.txt", "wb"))
# 二进制操作方式,读取数据文件
data = pickle.load(open("d3.txt", "rb"))
print(type(data), data)