标签:数据类型 dict 方法 lin 序列化 操作 中文 key 文字
json.dumps()
序列化jsom.loads()
反序列化
import json
dic = {‘k1‘: ‘v1‘}
str_d = json.dumps(dic) #序列化
print(type(str_d), str_d)
#结果
<class ‘str‘> {"k1": "v1"}
str_d = json.load(str_d) #反序列化
print(type(str_d), str_d)
#结果
<class ‘dict‘> {‘k1‘: ‘v1‘}
json.dump()
向文件里写
一次性写进去
import jsonjson.load()
向文件外读取
一次性读出来
import jsonjson.dump(dic, f, ensure_ascii=False)
ensure_ascii=False
可以防止中文字符写入文件编程bytes类型数据import json
list = [{‘k1‘:v1}, {‘k2‘:v2}, {‘k3‘:v3}]
for i in list:
f = open(‘file‘, ‘w‘, encoding=‘utf-8‘)
f.write(json.dumps(i) + ‘\n‘)
f.close()
import json
f = open(‘file‘)
for line in f:
print(json.loads(line.strip()))
json
,用法一模一样dump()
和load()
需要文件采用wb
或者rb
才能操作文件dump()
和load()
先写先读
import pickle
l1 = [‘1‘, ‘2‘]
l2 = [‘a‘, ‘b‘]
#写入
f = open(‘file‘, ‘wb‘, encoding=‘utf-8‘)
pickle.dump(l1, f) #第一个数据导入
pickle.dump(l2, f) #第二个数据导入
f.close()
#读取
f = open(‘file‘, ‘rb‘, encoding=‘utf-8‘)
l1 = pickle.load(f) #读取第一个数据
l2 = pickle.load(f) #读取第二个数据
f.close()
只有一个shelve.open()
方法,要结合.close()
使用
#导入shelve模块
import shelve
#写入数据
f = shelve.open(‘file‘, flag=‘w‘) #打开文件,没有自动创建
f[‘name‘] = ‘李王‘ #指定f[key]直接赋值数据就行
f.close() #关闭文件句柄
#读取数据
f = shelve.open(‘file‘, flag=‘r‘) #打开文件,没有自动创建
shelve_name = f[‘name‘] #指定f[key]直接读取数据就行
print(shelve_name)#打印结果
f.close() #关闭句柄
writeback=True
参数,修改已经写入的数据时需要加入,要不然无法感知文件修改
#不写入参数
import shelve
f = shelve.open(‘file‘, flag=‘w‘) #没有添加writeback参数
f[‘key‘] = {}
f[‘key‘][‘new_key‘] = ‘new_str‘
f.close()
#读取
f = shelve.open(‘file‘, flaf=‘r‘)
print(f[‘key‘][‘new_key‘])
#结果
{}
KeyError: ‘new_key‘ #提示找不到‘new_key‘,说明没有写入新数据
#写入参数
import shelve
f = shelve.open(‘file‘, flag=‘w‘, writeback=True) #添加writeback参数
f[‘key‘] = {}
f[‘key‘][‘new_key‘] = ‘new_str‘
f.close()
#读取
f = shelve.open(‘file‘, flag=‘r‘)
print(f[‘key‘])
print(f[‘key‘][‘new_key‘])
f.close()
#结果
{‘new_key‘: ‘new_str‘}
new_str
标签:数据类型 dict 方法 lin 序列化 操作 中文 key 文字
原文地址:https://www.cnblogs.com/liliudong/p/9593973.html