文章目录
一、pickle模块
将一个对象存入到文件,便于保存和传输,我们称之为序列化
将文件里的一段内容转换成一个对象的过程,我们称之为反序列化
在python里有两个模块可以实现序列化和反序列化:pickle json
1、pickle.dumps和pickle.dump
- pickle.dumps 将一个对象转换成二进制,便于保存
- pickle.dump将一个对象转换成为二进制的同时,直接写入到文件里
file = open('demo.txt', 'w', encoding='utf-8')
file.write('张三,李四,王五') # 可以直接写入字符串
# file.write(names) # TypeError: write() argument must be str, not list
# file.write # 只能写入字符串,不能写入列表
file.close()
import pickle
names = ['张三,李四,王五']
file = open('demo.txt', 'wb')
# 1、pickle.dumps 将一个对象转换成二进制,便于保存
result = pickle.dumps(names) # 把对象给到dumps,结果是一个二进制
print(result)
file.write(result)
# 2、dump 将一个对象转换成为二进制的同时,直接写入到文件里
pickle.dump(names, file)
file.close()
2、pickle.load和pickle.loads
- pickle.load 方法需要一个文件读取流,把文件里的内容加载成为一个对象
- pickle.loads 把一个二进制转换成一个对象
import pickle
names = ['张三,李四,王五']
w_file = open('demo.txt', 'wb') # 以二进制形式写入
result = pickle.dumps(names) # 把对象给到dumps,结果是一个二进制
pickle.dump(names, w_file)
w_file.close()
r_file = open('demo.txt', 'rb')
# load 方法需要一个文件读取流,把文件里的内容加载成为一个对象
x = pickle.load(r_file)
print(x)
print(type(x)) # <calss 'list'>是个列表,dumps存进去的是个对象,用load加载出来的是个列表
x.append('jerry') # 所以可以往列表里面加数据
print(x)
r_file.close()
# 把一个二进制转换成一个对象
y = pickle.loads(result)
print(y, type(y))
二、json模块
json是文件传输的一种格式,可以理解为特殊的字符串
json字符串必须要使用双引号
1、json.dumps和json.dump
- json.dumps 把对象转换成为一个JSON字符串
- json.dump把 对象转换成json字符串的同时,并写入文件中
import json
names = ['lisi', 'wangwu', 'zhangsan']
w_file = open('test.txt',