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

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

ruisui885个月前 (01-23)技术分析21

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 文件操作” 的相关文章

手把手教你Vue之父子组件间通信实践讲解【props、$ref 、$emit】

组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用。那么组件间如何通信,也就成为了vue中重点知识了。这篇文章将会通过props、$ref和 $emit 这几个知识点,来讲解如何实现父子组件间通信。转载链接:https://www.jia...

vue3父子组件传对象,子组件访问修改父组件对象中的属性值

在Vue 3中,父子组件之间的数据传输通常通过props和emit进行。父组件可以通过props向下传递数据给子组件,子组件则可以通过emit向上通知父组件更新数据。如果需要在子组件中修改父组件对象中的属性值,可以使用一个名为ref的Vue 3新特性。以下是一个示例,演示了如何在Vue 3中实现父子...

「 VUE3 + TS + Vite 」父子组件间如何通信?

组件之间传值,大家都很熟悉,涉及到 VUE3 +TS 好多同学就无从下手了,所以分享这篇文章,希望看完后提起 VUE3+TS 能够不慌不忙。平时使用的函数如:ref、reactive、watch、computed 等需要先引入才能使用,但是本篇文章介绍的 defineProps、withDefaul...

基于gitlab的PR操作教程

基于gitlab的PR操作教程注:该教程主要基于git命令行操作,其他图形化工具也可完成以下所有操作步骤,顺手即可。推荐工具:Source Tree ,TortoiseGit参考:gitflow一 . 基于分支的PR操作1. 本地切换到master分支1. 拉取最新代码2. 基于master创建ho...

如何在GitLab上回退指定版本的代码?GitLab回退指定版本问题分析

在Git中,回退到指定版本并不是删除或撤销之前的提交,而是创建一个新的提交,该提交包含指定版本的内容。这意味着您需要将当前代码更改与指定版本之间的差异进行比较,并将其合并到一个新的提交中。如果您没有更新本地代码,并且您希望将 GitLab 仓库回退到指定版本,您可以使用以下命令:git fetchg...

jvm疯狂吃内存,到底是谁的锅?

jvm应该是每一个java程序员都需要掌握的内容,但是在没有遇到问题之前,很多都是基于理论的,唯有实战才能增加个人的知识储备。本文是从一个角度来分析是谁在狂吃内存,希望对你有所帮助。本文是易观技术人员注意到一台开发机上各个微服务进程占用内存很高,随即便展开了调查......ps:本文来源于:http...