Python基础——序列化

一、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', 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值