python中常用的序列化模块_python常用模块-序列化

摘要:

json模块:优点:跨语言、体积小缺点:只能支持int\str\list\tuple\dict首先模块本身是不具备直接对文件进行读写的,是要通过创建好的文件对象进行读写操作。注意:...

json模块:

优点:跨语言、体积小

缺点:只能支持int\str\list\tuple\dict

首先模块本身是不具备直接对文件进行读写的,是要通过创建好的文件对象进行读写操作。

注意:load文件时json文件里必须用双引号[json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 2 column 5 (char 6)],因为输出是单引号,估计是里面转义会有问题,所以直接提示用双引号。import json"""

json.load("文件对象") # json.load(ufo) 传入文件对象

json.loads("字符串") # json.loads(ufo.read()) 传入字符串

json.dump("data","文件对象") # 转换成字符串同时写入文件,data一般为字典格式

json.dumps("string/list/tuple/dict") # 仅转换成字符串,不写入文件

"""user_file = "1234.json"

ufo = open(user_file,'r+')

def read_bank_card():

d_card = json.load(ufo)

return d_card

def write_bank_card(data):

ufo.seek(0)

ufo.truncate()

str_json = json.dump(data)

ufo.close()

def write_bank_card(data):

str_json = json.dumps(data)

ufo.seek(0)

ufo.truncate()

ufo.write(str_json)

ufo.close()

data_card = read_bank_card()

print(data_card)# 写入时保证是中文:ensure_ascii=False.

ufo = open('goods.txt','r+')

ufo.seek(0)

ufo.truncate()

json.dump(dict_goods,ufo,indent=4,ensure_ascii=False) # 写入时是多行格式,使用indent缩进参数,普遍使用缩进量为4.为0不缩进,不带这个参数则一行写

ufo.flush()

ufo.close()

shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式

序列化:import shelve

f = shelve.open('shelve_test') # 打开一个文件

names = ["alex", "rain", "test"]

info = {'name':'alex','age':22}

f["names"] = names # 持久化列表

f['info_dic'] = info

f.close()

反序列化:import shelve

d = shelve.open('shelve_test') # 打开一个文件

print(d['names'])

print(d['info_dic'])

#del d['test'] #还可以删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值