Python 中如何把 JSON 数据写入文件?

Python 写 JSON 文件:json.dump(data, file) 直接写入;常用参数 indent=4 美化、ensure_ascii=False 保留中文。本文介绍完整写法及读取方式。

最佳实践
Python 中如何把 JSON 数据写入文件?封面

json.dump(data, f):打开文件后以写模式传入文件对象即可。常用参数:indent=4 美化格式、ensure_ascii=False 保留中文原文。

基本写法

import json

data = {
    "name": "张三",
    "age": 35,
    "city": "杭州"
}

with open("data.json", "w", encoding="utf-8") as f:
    json.dump(data, f, indent=4, ensure_ascii=False)
  • with 语句自动关闭文件;
  • ensure_ascii=False 让中文直接写入(默认会转成 \uXXXX);
  • indent=4 让文件内容带缩进、人可读;省略则写成单行紧凑格式。

读回来

with open("data.json", "r", encoding="utf-8") as f:
    data = json.load(f)

print(data["name"])  # 张三

dump 与 dumps 的区别

json.dump(data, f)      # 直接写入文件对象
json.dumps(data)        # 返回 JSON 字符串,自己决定写哪

一行一个 JSON 对象(JSONL)

日志/数据流场景常用 JSON Lines 格式:

with open("data.jsonl", "w", encoding="utf-8") as f:
    for record in records:
        f.write(json.dumps(record, ensure_ascii=False) + "\n")

常见问题(FAQ)

Q:写入中文变成 \u4e2d\u6587?
A:加 ensure_ascii=False,并确保文件以 encoding="utf-8" 打开。

Q:datetime 对象不能直接 dump?
A:对,JSON 不支持日期类型。先转字符串:data["time"] = dt.isoformat();或自定义 encoder。

Q:文件已存在会怎样?
A:"w" 模式覆盖原文件。追加用 "a"(适合 JSONL 格式,普通 JSON 文件追加会产生非法内容)。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台