首页 > 代码库 > python序列化 pickle,json模块
python序列化 pickle,json模块
Python中用于序列化的两个模块
- json 用于【字符串】和 【python基本数据类型】 间进行转换
- pickle 用于【python特有的类型】 和 【python基本数据类型】间进行转换
Json模块提供了四个功能:dumps、dump、loads、load
pickle模块提供了四个功能:dumps、dump、loads、load
pickle.dump[ojb, file [,protocol]
序列化对象,并将结果数据流写入到文件对象中。
必填参数ojb表示要封装的对象
必填参数file表示ojb写入的文件对象,file文件必须是二进制的模式打开,如‘rb’
参数protocol是序列化模式,默认值为0。
pickle.load(file)
反序列化对象。将文件中的数据解析为一个Python对象。
必填参数file必须以二进制可读模式打开,即“rb”,其他都为可选参数
pickle.dumps(obj)
以字节对象形式返回封装的对象,不需要写入文件中
pickle.loads(bytes_object):
从字节对象中读取被封装的对象,并返回
pickle可能出现三种异常:
1. PickleError:封装和拆封时出现的异常类,继承自Exception
2. PicklingError: 遇到不可封装的对象时出现的异常,继承自PickleError
3. UnPicklingError: 拆封对象过程中出现的异常,继承自PickleError
下面是一个修改文件的例子:
import pickle account = { ‘xiaoming‘ :{ ‘name‘ : ‘mingrizhaoyang‘, ‘emai‘ : ‘2556688@qq.com‘, ‘password‘ : ‘abc123‘, ‘balance‘ : 10000, ‘bank_acc‘ : { ‘ICB‘ : ‘23123123123‘, ‘CCB‘ : ‘28321831823123‘ } }, ‘xiaohong‘ :{ ‘name‘ : ‘buzhibujue‘, ‘emai‘ : ‘333333@qq.com‘, ‘password‘ : ‘qaq123‘, ‘balance‘ : 10000, ‘bank_acc‘ : { ‘ICB‘ : ‘12372847384‘, ‘CCB‘ : ‘12324452661‘ } } } with open(‘acc_data‘, ‘wb‘) as f: pickle.dump(account, f)
import pickle,pprint with open(‘acc_data‘, ‘rb‘) as fb: data = pickle.load(fb) pprint.pprint(data)
import pickle fb = open(‘acc_data‘, ‘rb‘) ac_data = pickle.load(fb) #也可以 c_data = http://www.mamicode.com/pickle.loads(fb.read()) ac_data["xiaohong"][‘balance‘] = ac_data["xiaohong"][‘balance‘] - 1000 fb.close() with open(‘acc_data‘, ‘wb‘) as f: pickle.dump(ac_data, f) #也可以 f.write(pickle.dumps(ac_data))
JSON用法与pickele 基本上是一样的,操作的文件不用转二进制就可以。
import json account = { ‘xiaoming‘ :{ ‘name‘ : ‘mingrizhaoyang‘, ‘emai‘ : ‘2556688@qq.com‘, ‘password‘ : ‘abc123‘, ‘balance‘ : 10000, ‘bank_acc‘ : { ‘ICB‘ : ‘23123123123‘, ‘CCB‘ : ‘28321831823123‘ } }, ‘xiaohong‘ :{ ‘name‘ : ‘buzhibujue‘, ‘emai‘ : ‘333333@qq.com‘, ‘password‘ : ‘qaq123‘, ‘balance‘ : 10000, ‘bank_acc‘ : { ‘ICB‘ : ‘12372847384‘, ‘CCB‘ : ‘12324452661‘ } } } with open(‘acc_data‘, ‘w‘) as f: json.dump(account, f)
import json with open(‘acc_data‘, ‘r‘) as fb: data = json.load(fb) print(data)
import json # with open(‘acc_data‘, ‘r‘) as fb: # data = http://www.mamicode.com/json.load(fb) fb = open(‘acc_data‘, ‘r‘) data = json.load(fb) data["xiaohong"][‘balance‘] = data["xiaohong"][‘balance‘] - 1000 with open(‘acc_data‘, ‘w‘) as f: json.dump(data, f)
python序列化 pickle,json模块
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。