写数据
网页爬取得数据中文数据以字典的形式保存json文件:
filepath = open('F:\\kettle\\source\\name_list.json', "w",encoding='gb18030')
data = json.dumps(dict_all,ensure_ascii = False, indent = 4 )
filepath.write(data)
filepath.close()
说明:“w”参数表示写入数据,每次执行将会全部覆盖原来的数据,其他参数说明如下:
---------------------------------------------------------------------------------------
r 只能读
r+ 可读可写 不会创建不存在的文件 从顶部开始写 会覆盖之前此位置的内容
w+ 可读可写 如果文件存在 则覆盖整个文件不存在则创建
w 只能写 覆盖整个文件 不存在则创建
a 只能写 从文件底部添加内容 不存在则创建
a+ 可读可写 从文件顶部读取内容 从文件底部添加内容 不存在则创建
----------------------------------------------------------------------------------------
encoding 参数指定数据存入的格式,写入和读取的时候编码格式需要一致-均为存入数据的编码格式,我的dict是gb18030的,所以这里encoding='gb18030';
如不不指定encoding格式,下面代码保持不变有些时候回报错gbk错误:
json.dumps 序列化时对中文默认使用的ascii编码,ensure_ascii=False(默认为true),将启用原来的编码形式;
indent 设置缩进空格
读数据
with open('F:\\kettle\\source\\name_list.json', "r",encoding='gb18030') as f:
data = json.load(f)
f.close()
encoding编码与数据写入的时候保持一致即可。
打开的文件窗口一定要记得关闭哦,防止内存占用~
此时data为dict数据类型,用dict读取即可:
增/改: dict["key"]=value key存在则修改key对应的值,key不存在则新增记录
dict_a.update(dict_b) 字典合并,b字典合并到a,相同的key则用b的值覆盖a
dict.setdefault("key","keyvalues") dict里面找key,如果key存在不操作,key不存在则插入记录对到dict里面;
删: ①dict.pop("key") ② del dict["key"] ③随机删除一个慎用 dict.popitem()查: ①dict["key"] --key不存在会报错 ②print(dict.get("key"))--存在返回值,不存在返回none ③判断key是否存在-print (“key” in dict)返回布尔类型
dict.keys() 返回key列表