pickle模块与json模块
- pickle与json模块用于序列化处理
- pickle多用在python本身,其他语言并不支持
- json可以用在pyt与其他语言之间的转化
- pickle与json模块同样具有四个功能:load、loads、dump、dumps
- 相对于pickle,json的局限性比较大,但同样必不可少
import pickle, json
# pickle.dumps(转换的对象) 将指定的对象转换成字节
# 直接转换
d = {1: "11", 2: "22"}
a = pickle.dumps(d)
print(a) # b'\x80\x03}q\x00(K\x01X\x02\x00\x00\x0011q\x01K\x02X\x02\x00\x00\x0022q\x02u.'
# 文件操作
f = open("db.txt", "wb") # 打开文件时要用"字节"方式打开
f.write(pickle.dumps(d))
f.close()
# pickle.dump(obj="将要进行转换的对象",file="文件名") 将转换的obj写入file,file为必要参数,所以dump只适用于文件操作
f = open("db.txt", "wb") # 打开文件时要用"字节"方式打开
pickle.dump(d, f)
f.close()
# pickle.loads(形似对象) 将指定的字节转换成原格式
# 用于将形似列表、字典的字符串转换成相应的列表、字典;形似对象内部的字符串必须用双引号
# 直接转换
d = b'\x80\x03}q\x00(K\x01X\x02\x00\x00\x0011q\x01K\x02X\x02\x00\x00\x0022q\x02u.'
a = pickle.loads(d)
print(a) # {1: '11', 2: '22'}
# 文件操作
f = open("db.txt", "rb") # 打开文件时要用"字节"方式打开
a = pickle.loads(f.read())
# pickle.load(file="文件名") 将文件转换成原数据对象,因为file为必要参数,所以load只适用于文件操作
f = open("db.txt", "rb") # 打开文件时要用"字节"方式打开
d = pickle.load(f)
print(d) # {1: '11', 2: '22'}
# json.dumps(转换的对象) 将指定的对象转换成字符串
# 直接转换
d = {1: "11", 2: "22"}
a = json.dumps(d)
print(a) # {"1": "11", "2": "22"}
# 文件操作
f = open("db.txt", "w") # 打开文件时要用"非字节"方式打开
f.write(json.dumps(d))
f.close()
# json.dump(obj="将要进行转换的对象",fp="文件名") 将转换的obj写入fp,fp为必要参数,所以dump只适用于文件操作
f = open("db.txt", "w") # 打开文件时要用"非字节"方式打开
json.dump(d, f)
f.close()
# json.loads(转换的内容) 将指定的字符串转换成原格式,因为json的对象必须是str所以 不做之间转换,只能进行文件操作
f = open("db.txt", "r") # 打开文件时要用"非字节"方式打开
a = json.loads(f.read())
print(a) # {'1': '11', '2': '22'}
# pickle.load(file="文件名") 将文件转换成原数据对象,因为file为必要参数,所以load只适用于文件操作
f = open("db.txt", "r") # 打开文件时要用"字节"方式打开
d = json.load(f)
print(d) # {1: '11', 2: '22'}