Python中将JSON数据写入文件的实现方法

 更新时间:2025年06月25日 10:47:24   作者:1010n111  
在Python开发中,JSON是一种轻量级的数据交换格式,常用于前后端数据交互、配置文件存储等场景,当我们需要将Python中的字典或列表等数据以JSON格式保存到文件时,就需要掌握如何将JSON数据写入文件的方法,所以本文给大家介绍了Python中将JSON数据写入文件的实现方法

Python中如何将JSON数据写入文件

技术背景

在Python开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端数据交互、配置文件存储等场景。当我们需要将Python中的字典或列表等数据以JSON格式保存到文件时,就需要掌握如何将JSON数据写入文件的方法。

实现步骤

1. 导入json模块

Python的json模块提供了处理JSON数据的功能,我们需要先导入该模块。

import json

2. 准备JSON数据

JSON数据通常以字典或列表的形式存在于Python中。例如:

data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

3. 打开文件并写入JSON数据

使用open()函数打开文件,然后使用json.dump()json.dumps()方法将JSON数据写入文件。

使用json.dump()方法

json.dump()方法将Python对象直接写入文件对象。

with open('data.json', 'w') as f:
    json.dump(data, f)

使用json.dumps()方法

json.dumps()方法将Python对象转换为JSON字符串,然后再写入文件。

json_string = json.dumps(data)
with open('data.json', 'w') as f:
    f.write(json_string)

核心代码

以下是一个完整的示例代码,展示了如何将JSON数据写入文件,并对文件进行读取验证:

import json

# 准备JSON数据
data = {
    "a list": [1, 42, 3.141, 1337, 'help', '€'],
    "a string": "bla",
    "another dict": {
        "foo": "bar",
        "key": "value",
        "the answer": 42
    }
}

# 写入JSON文件
with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=4)

# 读取JSON文件
with open('data.json') as data_file:
    data_loaded = json.load(data_file)

print(data == data_loaded)

最佳实践

提高可读性

为了使生成的JSON文件更易于阅读,可以在json.dump()json.dumps()方法中添加indentsort_keys参数。

with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=4, sort_keys=True)

处理非ASCII字符

如果JSON数据中包含非ASCII字符,建议使用ensure_ascii=False参数,以避免字符被转义。

with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False)

常见问题

1. TypeError: must be string or buffer, not dict

当直接将Python字典写入文件时,会出现该错误。因为文件写入操作需要字符串或字节类型的数据,而字典不是字符串类型。解决方法是使用json.dump()json.dumps()方法将字典转换为JSON字符串。

2. 非ASCII字符被转义

如果不使用ensure_ascii=False参数,非ASCII字符会被转义为Unicode编码。例如:

import json
data = {"price": "€10"}
print(json.dumps(data))  # 输出: '{"price": "\\u20ac10"}'
print(json.dumps(data, ensure_ascii=False))  # 输出: '{"price": "€10"}'

3. 处理NumPy数据类型

如果JSON数据中包含NumPy数据类型,json.dumps()方法会抛出TypeError异常。可以自定义一个JSON编码器来处理NumPy数据类型。

import json
import numpy as np

class NumpyEncoder(json.JSONEncoder):
    """ Special json encoder for np types """
    def default(self, obj):
        if isinstance(obj, (np.int_, np.intc, np.intp, np.int8,
                            np.int16, np.int32, np.int64, np.uint8,
                            np.uint16, np.uint32, np.uint64)):
            return int(obj)
        elif isinstance(obj, (np.float_, np.float16, np.float32,
                              np.float64)):
            return float(obj)
        elif isinstance(obj, (np.ndarray,)):
            return obj.tolist()
        return json.JSONEncoder.default(self, obj)

my_data = {'array': np.array([1, 2, 3])}
with open('my_filename.json', 'w') as f:
    json.dump(my_data, f, indent=4, cls=NumpyEncoder)

到此这篇关于Python中将JSON数据写入文件的实现方法的文章就介绍到这了,更多相关Python将JSON数据写入文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python简单生成随机姓名的方法示例

    Python简单生成随机姓名的方法示例

    这篇文章主要介绍了Python简单生成随机姓名的方法,结合实例形式分析了Python基于random模块生成随机字符串组合的相关操作技巧,需要的朋友可以参考下
    2017-12-12
  • python计算阶乘和的方法(1!+2!+3!+...+n!)

    python计算阶乘和的方法(1!+2!+3!+...+n!)

    今天小编就为大家分享一篇python计算阶乘和的方法(1!+2!+3!+...+n!),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • 创建Shapefile文件并写入数据的例子

    创建Shapefile文件并写入数据的例子

    今天小编就为大家分享一篇创建Shapefile文件并写入数据的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 详解如何优化和调整Python中Scrapy的性能

    详解如何优化和调整Python中Scrapy的性能

    在本篇高级教程中,我们将深入探讨如何优化和调整Scrapy爬虫的性能,以及如何处理更复杂的抓取任务,如登录,处理Cookies和会话,以及避免爬虫被网站识别和封锁,需要的朋友可以参考下
    2023-09-09
  • Python中设置变量作为默认值时容易遇到的错误

    Python中设置变量作为默认值时容易遇到的错误

    这篇文章主要介绍了Python中设置变量作为默认值时容易遇到的错误,这是Python新手经常容易碰到的问题,且往往不会被轻易察觉到,需要的朋友可以参考下
    2015-04-04
  • 在 Python 中如何为对象添加属性

    在 Python 中如何为对象添加属性

    在本文中我们将介绍如何在Python中为对象添加属性,我们还将通过示例介绍如何在Python中更改对象的属性,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-06-06
  • Python爬虫小技巧之伪造随机的User-Agent

    Python爬虫小技巧之伪造随机的User-Agent

    这篇文章主要给大家介绍了关于Python爬虫小技巧之伪造随机的User-Agent的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • python str转json的具体步骤

    python str转json的具体步骤

    使用Python内置的json模块,可以将str转换为JSON,本文给大家介绍python str转json的具体步骤,文中补充介绍了Python-字符串str和json格式的转换问题,感兴趣的朋友一起看看吧
    2024-01-01
  • Python命令行中引导用户指定选择路径

    Python命令行中引导用户指定选择路径

    这篇文章主要为大家介绍了命令行中引导用户指定选择路径,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • 手把手教你如何安装Pycharm(详细图文教程)

    手把手教你如何安装Pycharm(详细图文教程)

    这篇文章主要介绍了手把手教你如何安装Pycharm(详细图文教程),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11

最新评论