当前位置:首页 > 技术分析 > 正文内容

20 天学 Python 文件操作:Day 9 JSON 文件操作

ruisui883个月前 (01-23)技术分析12

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于 API 和配置文件中。Python 提供了内置的 json 模块,帮助我们轻松地读取、写入和操作 JSON 数据。今天,我们将学习如何高效地处理 JSON 文件。


1. JSON 格式简介

JSON 是基于键值对的结构化数据格式,类似于 Python 的字典。以下是一个 JSON 示例:

{
  "name": "Alice",
  "age": 25,
  "skills": ["Python", "Machine Learning"]
}

2. 读取 JSON 文件

使用 json.load 从文件中加载 JSON 数据。

示例:读取 JSON 文件

假设有一个文件 data.json,内容如下:

{
  "name": "Alice",
  "age": 25,
  "skills": ["Python", "Machine Learning"]
}
import json

def read_json(file_path):
    with open(file_path, 'r') as f:
        data = json.load(f)
    print("读取的 JSON 数据:", data)
    return data

# 示例
data = read_json("data.json")

3. 写入 JSON 文件

使用 json.dump 将数据写入 JSON 文件。

示例:写入 JSON 文件

import json

def write_json(file_path, data):
    with open(file_path, 'w') as f:
        json.dump(data, f, indent=4)
    print(f"数据已写入到 {file_path}")

# 示例
data = {
    "name": "Bob",
    "age": 30,
    "skills": ["Java", "Spring"]
}
write_json("output.json", data)

注意:参数 indent=4 用于格式化输出,使 JSON 更易读。


4. 修改 JSON 数据

可以先加载 JSON 数据,进行修改后再保存。

示例:修改 JSON 文件

import json

def update_json(file_path, key, value):
    with open(file_path, 'r') as f:
        data = json.load(f)

    data[key] = value

    with open(file_path, 'w') as f:
        json.dump(data, f, indent=4)

    print(f"文件 {file_path} 中的键 '{key}' 已更新为 '{value}'")

# 示例
update_json("data.json", "age", 28)

5. JSON 字符串操作

除了文件操作,json 模块还支持 JSON 字符串的解析和生成。

从 JSON 字符串解析数据

def parse_json_string(json_string):
    data = json.loads(json_string)
    print("解析的 JSON 数据:", data)
    return data

# 示例
json_string = '{"name": "Charlie", "age": 22}'
data = parse_json_string(json_string)

将数据转换为 JSON 字符串

def generate_json_string(data):
    json_string = json.dumps(data, indent=4)
    print("生成的 JSON 字符串:")
    print(json_string)
    return json_string

# 示例
data = {"name": "Diana", "age": 35}
json_string = generate_json_string(data)

6. 练习任务

  1. 编写一个函数 merge_json_files(file1, file2, output_file),将两个 JSON 文件的数据合并后保存到新的 JSON 文件。
  2. 编写一个函数 filter_json(file_path, key, value),过滤 JSON 文件中包含特定键值的数据并返回。

示例代码框架

def merge_json_files(file1, file2, output_file):
    with open(file1, 'r') as f1, open(file2, 'r') as f2:
        data1 = json.load(f1)
        data2 = json.load(f2)

    merged_data = {**data1, **data2}

    with open(output_file, 'w') as f:
        json.dump(merged_data, f, indent=4)

    print(f"文件已合并到 {output_file}")

def filter_json(file_path, key, value):
    with open(file_path, 'r') as f:
        data = json.load(f)

    filtered_data = {k: v for k, v in data.items() if v.get(key) == value}
    return filtered_data

通过今天的学习,你已经掌握了如何读取、写入、修改和解析 JSON 数据。明天我们将学习文件权限与安全性相关的操作,敬请期待!

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/483.html

分享给朋友:

“20 天学 Python 文件操作:Day 9 JSON 文件操作” 的相关文章

费用管理系统(BMS)

随着物流仓储行业的快速发展,费用管理系统的应用愈发重要。BMS系统不仅简化了报价与结算流程,还降低了管理成本,提升了效率。本文深入探讨了海外仓BMS系统的功能与应用,展示了其在费用管理中的重要作用,为物流仓储行业提供了有效的费用管理解决方案。一、什么是费用管理系统BMS也叫费用管理系统,主要是用于管...

Ubuntu Linux 24.04 LTS发行版现已开放下载

IT之家 4 月 25 日消息,Ubuntu 24.04 长期支持版(LTS)“Noble Numbat” 现已发布,有需要的用户请通过官网下载发行版 ISO 镜像进行安装。Ubuntu 24.04 采用了 Linux 6.8 内核,可利用 Netplan 在桌面上配置网络连接,还配备了现代化的桌面...

「2022」打算跳槽涨薪,必问面试题及答案——VUE篇

1、为什么选择VUE,解决了什么问题?vue.js 正如官网所说的,是一套构建用户界面的渐进式框架。与其它重量级框架不同的是,vue 被设计为可以自底向上逐层应用。vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另外一方面,当与现代化工具链以及各种支持类库结合使用时,vu...

10分钟搞定gitlab-ci自动化部署

gitlab-ci 是持续集成工具/自动化部署工具,类似 jenkins。持续集成 是将代码集成到共享存储库并尽可能早地自动构建/测试每个更改的实践 - 通常一天几次。概述在编码完成时都会进行打包发布过程,如果每次都手动操作这一步骤就会浪费时间,效率低下。所以就有了持续集成。准备事项请提前安装以下软...

摄影后期必看 | PS插件camera raw 16.4教程 | 范围蒙版

范围蒙版Camera Raw 【蒙版】模块中提供了三个范围蒙版工具,可以通过特定的范围来创建蒙版。此次新增的【范围蒙版】大大加强了acr插件对局部调整的能力。点击下拉小箭头可以看到【颜色范围】,可用于快速选择想要编辑的颜色。快捷键:Shift + C【明亮度范围】,可用于快速选择想要调整的明亮度。快...

12种JavaScript中最常用的数组操作整理汇总

数组是最常见的数据结构之一,我们需要绝对自信地使用它。在这里,我将列出 JavaScript 中最重要的几个数组常用操作片段,包括数组长度、替换元素、去重以及许多其他内容。1、数组长度大多数人都知道可以像这样得到数组的长度:const arr = [1, 2, 3]; console.log(a...