python怎么读取和写入JSON文件_python JSON文件读写操作详解

下次还敢
发布: 2025-09-14 16:32:01
原创
1068人浏览过
Python处理JSON文件需用json模块,读取用json.load(),写入用json.dump();常见编码问题源于未指定UTF-8,解决方案是在open()中显式设置encoding='utf-8',并使用ensure_ascii=False支持中文,避免乱码。

python怎么读取和写入json文件_python json文件读写操作详解

Python处理JSON文件,核心在于使用内置的

json
登录后复制
模块。无论是将Python数据结构(如字典、列表)写入文件,还是从文件中读取JSON格式的数据并转换为Python对象,这个模块都能高效完成。简单来说,
json.dump()
登录后复制
用于写入,
json.load()
登录后复制
用于读取。

我个人觉得,Python的

json
登录后复制
模块设计得相当直观,用起来没什么门槛。当你需要将一些配置信息、API响应或者结构化数据保存下来,JSON文件无疑是个好选择。

读取JSON文件: 最常见的操作就是把一个JSON文件里的内容读出来,变成Python能用的字典或列表。这通常涉及两步:打开文件,然后用

json.load()
登录后复制

import json

# 假设我们有一个名为 'data.json' 的文件,内容如下:
# {
#     "name": "Alice",
#     "age": 30,
#     "isStudent": false,
#     "courses": ["Math", "Physics"]
# }

try:
    with open('data.json', 'r', encoding='utf-8') as f:
        data = json.load(f)
    print("成功读取JSON文件:")
    print(data)
    print(f"姓名: {data['name']}, 年龄: {data['age']}")
except FileNotFoundError:
    print("错误:文件 'data.json' 未找到。")
except json.JSONDecodeError as e:
    print(f"错误:JSON解码失败 - {e}")
except Exception as e:
    print(f"发生未知错误:{e}")
登录后复制

这里我习惯性地加上了

encoding='utf-8'
登录后复制
,因为处理中文或特殊字符时,明确指定编码能省去不少麻烦。
with open(...)
登录后复制
这种上下文管理器的方式,能确保文件无论如何都会被正确关闭,这是个好习惯。

写入JSON文件: 要把Python数据写入JSON文件,过程也类似,只是这次用的是

json.dump()
登录后复制

import json

# 准备一些Python数据
new_data = {
    "product": "Laptop",
    "price": 1200.50,
    "features": ["16GB RAM", "512GB SSD", "Intel i7"],
    "available": True,
    "description": "高性能轻薄笔记本"
}

try:
    with open('output.json', 'w', encoding='utf-8') as f:
        json.dump(new_data, f, ensure_ascii=False, indent=4)
    print("\n数据成功写入 'output.json' 文件。")

    # 验证一下是否写入成功,再读回来看看
    with open('output.json', 'r', encoding='utf-8') as f_read:
        read_back_data = json.load(f_read)
    print("验证读取:")
    print(read_back_data)

except IOError as e:
    print(f"错误:文件写入失败 - {e}")
except Exception as e:
    print(f"发生未知错误:{e}")
登录后复制

ensure_ascii=False
登录后复制
这个参数非常关键,特别是在处理包含非ASCII字符(比如中文)的数据时。如果设为
True
登录后复制
(默认值),中文会被转义成
\uXXXX
登录后复制
的形式,虽然不影响读取,但文件内容会变得难以直观阅读。
indent=4
登录后复制
则是为了让输出的JSON文件格式化得更漂亮,有缩进,方便我们人眼查看,这在调试或者手动编辑配置文件时特别有用。

立即学习Python免费学习笔记(深入)”;

我发现很多新手在刚接触JSON读写时,常常会忽略编码问题和错误处理,导致程序在特定环境下崩溃,或者生成乱码文件。所以,在实际项目中,这些细节真的非常重要。

Find JSON Path Online
Find JSON Path Online

Easily find JSON paths within JSON objects using our intuitive Json Path Finder

Find JSON Path Online 30
查看详情 Find JSON Path Online

Python处理JSON数据时常见的编码问题及解决方案是什么?

编码问题,在我看来,是跨平台、跨语言数据交换时最容易踩的坑之一。JSON文件本身是文本,它没有内嵌的编码信息,所以解析器需要知道用什么编码来读取它。Python在处理JSON时,如果文件编码和程序读取时指定的编码不一致,或者默认编码不满足需求,就会出现乱码或者

UnicodeDecodeError
登录后复制

最常见的场景就是,文件里有中文,但你没有指定

encoding='utf-8'
登录后复制
。Python 3默认使用UTF-8处理字符串,但在文件I/O时,它会依赖于操作系统的默认编码。比如在Windows上可能是GBK,而在Linux上通常是UTF-8。这就导致了不一致性。

解决方案:

  1. 明确指定编码: 最直接、最可靠的方法,就是在

    open()
    登录后复制
    函数中始终明确指定
    encoding='utf-8'
    登录后复制
    。无论你是读文件还是写文件,都坚持用UTF-8,这几乎可以解决99%的编码问题。

    # 写入时
    with open('chinese_data.json', 'w', encoding='utf-8') as f:
        json.dump({"message": "你好,世界!"}, f, ensure_ascii=False, indent=4)
    
    # 读取时
    登录后复制

以上就是python怎么读取和写入JSON文件_python JSON文件读写操作详解的详细内容,更多请关注php中文网其它相关文章!

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号