摘要:
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'] #还可以删除
还没有评论,来说两句吧...