python操作json文件的种种知识点(代码片段)

梦想橡皮擦 梦想橡皮擦     2023-03-29     549

关键词:

本篇博客将带你全方位了解 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文件导入到 查看详情