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

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

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

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

基于Ubuntu的Linux Lite 6.0发行版正式发布

开发者 Jerry Bezencon 今天宣布,基于 Ubuntu 的 Linux Lite 6.0 发行版正式发布。本次更新代号为“Fluorite”,基于 Ubuntu 22.04 LTS (Jammy Jellyfish) 系统,它由长期支持的 Linux 5.15 LTS 内核系列驱动。下载...

Vue.js 组件通信的 3 大妙招

在 Vue.js 中,组件化是其核心概念之一,允许你将复杂的界面拆分成多个独立的、可复用的组件。在构建大型应用时,如何高效地在组件之间传递数据和触发事件是非常重要的。Vue.js 提供了多种方式来处理组件间的通信,下面是最常用的 3 种方式:1.父子组件通信:通过 Props 和 Events在 V...

代码分支规范

一.gitflow工作流说明:主分支:master,稳定版本代码分支,对外可以随时编译发布的分支,不允许直接Push代码,只能请求合并(pull request),且只接受hotfix、release分支的代码合并。gitlab上做限制。热修复分支:hotfix,针对现场紧急问题、bug修复的代码分...

vue-router是如何解析query参数呢? #前端

vue-router 中的 query 解析。1. 大家好,我是龙仔。今天来分享 vue-router 是如何解析快乐参数的,因为使用 vue 路由会传 query 参数和快乐参数,所以从 vue 的角度来看如何解析传递的快乐参数。2. 基础知识大家应知道,快乐参数结构如:a、b、c、a、b、c、a...

前端路由简介以及vue-router实现原理

作者:muwoo 来源:https://zhuanlan.zhihu.com/p/37730038后端路由简介路由这个概念最先是后端出现的。在以前用模板引擎开发页面时,经常会看到这样http://www.xxx.com/login 大致流程可以看成这样:浏览器发出请求服务器监听到80 端口(或443...

Vue进阶(二十六):详解router.push()

在Vue2.0路由跳转中,除了使用 <router-link> 声明式创建 a 标签来定义导航链接,还可以借助 router 的实例方法,通过编码式编写代码来实现。router.push(location)想要导航到不同的 URL,则使用 router.push 方法。这个方法会向 hi...