关键词:
本篇博客将带你全方位了解 Python 操作 json 文件的技术点
让你碰到 json 格式文件不在发愁
文章目录
json 模块
Python 提供了内置的 json 模块来处理 JSON 格式的文件。
该模块主要分为读取和写入 JSON 文件。
读取 JSON
使用 json.load()
或 json.loads()
方法来读取 JSON 文件。
其中 json.load()
方法用于读取文件中的 JSON 数据,json.loads()
方法用于读取字符串中的 JSON 数据。
写入 JSON
使用 json.dump()
或 json.dumps()
方法来写入 JSON 文件。
其中 json.dump()
方法用于写入 JSON 数据到文件中,json.dumps()
方法用于将 JSON 数据转换为字符串。
基于上述内容可以总结一下:
json.load()
,json.loads()
,json.dump()
和json.dumps()
中的s
都是字符串string
的缩写。
读取与写入基本用法如下
提前准备一个 travel.json
文件,存放到 python 文件所在目录。
import json
# 读取json文件
with open('travel.json', 'r', encoding='utf-8') as f:
data = json.load(f)
# 写入json文件
with open('travel.new.json', 'w', encoding='utf-8') as f:
json.dump(data, f)
Tops:在使用
json.load()
和json.loads()
读取 json 文件时,如果文件中存在格式错误,会抛出ValueError
异常。
json 模块进阶用法
控制输出格式
在处理 JSON 文件时,还可以使用 json.dump() 方法的可选参数来控制输出的格式,例如:
sort_keys
:按照键的字典序排序输出。indent
:缩进输出,可以指定缩进的空格数。
import json
# # 读取json文件
with open('travel.json', 'r', encoding='utf-8') as f:
data = json.load(f)
with open('travel.new.json', 'w', encoding='utf-8') as f:
json.dump(data, f, sort_keys=True, indent=4)
此时可以比对旧文件与新文件之间的差异,可以看到缩进关系产生了变化。
在 JSON 中存储 Python 特殊类型
如果你要在 json 中存储 python 特殊类型,例如 datetime,需要使用 json.JSONEncoder
类和 json.JSONDecoder
类来处理。
import json
from datetime import datetime
# 日期编码
class DateEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
return obj.strftime('%Y-%m-%d %H:%M:%S')
return json.JSONEncoder.default(self, obj)
d = 'date': datetime.now()
json_str = json.dumps(d, cls=DateEncoder)
print(json_str)
# 日期解码
class DateDecoder(json.JSONDecoder):
def __init__(self):
json.JSONDecoder.__init__(self, object_hook=self.dict_to_object)
def dict_to_object(self, d):
if 'date' in d:
d['date'] = datetime.strptime(d['date'], '%Y-%m-%d %H:%M:%S')
return d
data = json.loads(json_str, cls=DateDecoder)
print(data)
运行代码,可以得到编码和解码的输出。
"date": "2023-01-27 21:24:46"
'date': datetime.datetime(2023, 1, 27, 21, 24, 46)
对数据进行验证和清洗
JSON Schema 是一种用于验证 JSON 文档的标准,它可以用来确保 JSON 文档符合预期的格式。
jsonschema
模块需要提前安装,示例代码如下。
import json
import jsonschema
schema =
"type": "object",
"properties":
"name": "type": "string",
"age": "type": "number"
,
"required": ["name", "age"]
data = '"name": "梦想橡皮擦", "age": 28'
try:
jsonschema.validate(json.loads(data), schema)
print("可用的JSON")
except jsonschema.exceptions.ValidationError as e:
print(e)
当你的 json 格式正确时,会输出相应的内容,输出错误信息,测试代码可以将 "required": ["name", "age"]
修改为 "required": ["name", "age" , "sex"]
。
第三方模块
在处理 JSON 格式文件时还可以使用第三方库来更方便地操作,例如 pandas。
import pandas as pd
# 读取json文件
data = pd.read_json('travel.json')
# 写入json文件
data.to_json('travel.pandas.json')
还有其他第三方库也可以用来处理 JSON 格式文件,例如:
ijson
:迭代读取大型 JSON 文件。jsonpickle
:支持将 Python 对象序列化为 JSON 格式。jsonlines
:简单而高效地读取和写入文本文件中的 JSON 数据。simplejson
:提供了一种比标准库更快的 JSON 解析器和生成器。json-tricks
:支持一些高级功能,例如压缩和迭代。
📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 848 篇原创博客
全网 6000+人正在学习的 爬虫专栏 👇👇👇👇
开发技术--浅谈文件操作与字符编码(代码片段)
...前所有的文章思想格式都是:知识+情感。知识:对于所有的知识点的描述。力求不含任何的自我感情色彩。情感:用我自己的方式,解读知识点。力求通俗易懂,完美透析知识。正文本文主要分为两大部分,一部分是如何使用Python... 查看详情
文件操作——python必学知识赶紧收藏(代码片段)
文件操作一.文件基本操作1.1文件打开和关闭1.2读/写文件1.2.1写文件1.2.2读文件二.文件备份脚本前言:作者:神的孩子在歌唱大家好,我叫陈运智,大家可以叫我智一.文件基本操作1.1文件打开和关闭open(‘文件名称... 查看详情
python知识点-文件/异常(代码片段)
Python切片sliceslice()函数实现切片对象,主要用在切片操作函数里的参数传递start–起始位置stop–结束位置step–间距返回一个切片对象deffun1():myslice=slice(2)#设置截取5个元素的切片print('myslice:',myslice)slice(None,5,None)arr=... 查看详情
python中有关文件的知识。(代码片段)
1、文件的读取调用open()函数,返回一个File对象; fp=open(‘D:/123/Test.txt‘,‘w‘)调用File对象的read()或write()方法; fp.write(‘HelloWorld‘)调用File对象的close()方法,关闭该文件。 fp.close()#目录操作importo... 查看详情
python读写json格式数据(代码片段)
文章目录JSON格式数据简介使用Python读写JSON格式数据1.读取json文件2.写入json文件自己编写一个JsonUtilsJSON格式数据简介JSON文件的读写应算成Python基础知识的内容,但是由于在编写Nonebot插件时,常常会操作JSON类型的数据ÿ... 查看详情
python的apidoc操作(代码片段)
目录前言apidoc的安装Python文件定义接口信息apidoc.json文件生成apidoc网页文件前言操作系统win10时间2019年02月Python版本:Python3.5.2Nodejs版本:nodev8.9.3参考网址1参考网址2参考网址3apidoc的安装npminstallapidoc-g-g参数表示全局安装,这样哪... 查看详情
java操作文件的日常总结(文件压缩,文件解压,递归删除文件,文件的下载保存)(代码片段)
...门到精通❤️2.Python爬虫专栏,系统性的学习爬虫的知识点。9.9元买不了吃亏,买不了上当。python 查看详情
从一个class文件来理解java虚拟机的种种(代码片段)
...节码,映射到CPU或者OS的指令集被最终执行 操作系统最终执行的当然还是机器吗了。只不过linux系 查看详情
python从入门到精通(十九)python对文件的读写操作一览表,非常实用,非常简单(代码片段)
...点介绍Python对文件的读写操作,这是一个非常重要的知识点。干货满满,建议收藏,需要用到时常看看。小伙伴们如有问题及需要,欢迎踊跃留言哦~~~。文章目录前言open函数文件的读取文件写入各种模式的介绍只... 查看详情
python从入门到精通(十九)python对文件的读写操作一览表,非常实用,非常简单(代码片段)
...点介绍Python对文件的读写操作,这是一个非常重要的知识点。干货满满,建议收藏,需要用到时常看看。小伙伴们如有问题及需要,欢迎踊跃留言哦~~~。文章目录前言open函数文件的读取文件写入各种模式的介绍只... 查看详情
读取json文件,并使用python打印键值(代码片段)
...匹配列表中的项目。我尝试了这些婴儿步骤,但它没有用Python版本:2.7.5操作系统:Lenny这是python脚本:importsysimportreimportjsonmy_list=['windows-super-user','linuxuser','unix_super_user']forlis 查看详情
go要如何才能解释的清!和json之间的种种映射关系!「含解决方案&代码实现,建议收藏!」(代码片段)
...映射为Go结构体对象的场景。 Go和Json两者之间存在着种种联系,要如何才能解析之间的映射关系呢! 查看详情
go要如何才能解释的清!和json之间的种种映射关系!「含解决方案&代码实现,建议收藏!」(代码片段)
...映射为Go结构体对象的场景。 Go和Json两者之间存在着种种联系,要如何才能解析之间的映射关系呢! 查看详情
字符编码和文件处理(代码片段)
字符编码:储备知识点:1.计算机系统分为三层:应用程序操作系统计算机硬件2.运行python程序的三个步骤1.先启动python解释器2.再将python文件当作普通的文本文件读入内存3.解释执行读入内存的代码,开始识别语法字符编码1.什么是字... 查看详情
python(11)io编程(代码片段)
文章目录一、IO编程概述二、文件读写-读取文件-file-likeObject-二进制文件-字符编码-写入文件三、StringIO和BytesIO-StringIO-BytesIO四、操作文件和目录-环境变量-操作文件和目录五、序列化-pickle-JSON-JSON进阶本文参考廖雪峰的官网:... 查看详情
python文件的读写操作(代码片段)
文章目录一、Python文件读写概述二、使用open()打开文件三、使用read()、readline()、readlines()读取数据四、使用write()、writelines()写入文件最后一、Python文件读写概述Python在文件读写操作中,会使用「内置函数」和「Pandas库」两种... 查看详情
python知识点-文件/异常(代码片段)
Python切片sliceslice()函数实现切片对象,主要用在切片操作函数里的参数传递start–起始位置stop–结束位置step–间距返回一个切片对象deffun1():myslice=slice(2)#设置截取5个元素的切片print('myslice:',myslice)slice(None,5,None)arr=... 查看详情
python将json格式文件导入redis,多种方法(代码片段)
...rver.exeredis.windows.conf,效果图如下:文章目录使用Python连接redis安装redis与导入使用代码连接Redis写入键值操作JSON文件写入redis使用Python连接redis如果希望将JSON文件导入到 查看详情