Python 循环添加数据到 JSON 文件

在现代应用开发中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,已经广泛应用于数据存储和传输。Python 提供了简单易用的内置库来处理 JSON 数据。本文将介绍如何使用 Python 循环添加数据到 JSON 文件,展示相关代码示例,并通过流程图和类图来帮助理解。

什么是 JSON?

JSON 是一种文本格式,用来存储和交换数据。其结构是由键值对组成的,可以通过简单的语法来进行表示。JSON 格式的典型示例是:

{
    "name": "Alice",
    "age": 25,
    "is_student": false,
    "courses": ["Math", "Science"]
}

Python 中的 JSON 操作

在 Python 中,我们使用 json 模块来处理 JSON 数据。主要的几个功能包括:

  1. 加载 JSON 文件(读取)
  2. 保存 JSON 文件(写入)
  3. 更新 JSON 数据

下面,我们将通过一个实例演示如何循环添加数据到 JSON 文件。

实例:循环添加数据到 JSON 文件

考虑一个简单的场景,我们要维护一个学生的列表。我们希望能够逐个添加学生的姓名、年龄和课程信息。

初始化 JSON 文件

首先,创建一个初始的 JSON 文件 students.json,其内容如下:

[]

Python 代码示例

我们将编写一个 Python 脚本,让用户输入学生的信息,并将其保存到 students.json 文件中。

import json

# 获取现存学生列表
def load_students(filename):
    try:
        with open(filename, 'r') as file:
            return json.load(file)
    except FileNotFoundError:
        return []

# 保存学生列表
def save_students(filename, students):
    with open(filename, 'w') as file:
        json.dump(students, file, indent=4)

# 主函数
def main():
    filename = 'students.json'
    students = load_students(filename)

    while True:
        name = input("输入学生姓名(或输入'quit'退出):")
        if name.lower() == 'quit':
            break
        age = input("输入学生年龄:")
        courses = input("输入课程(用逗号分隔):").split(',')

        student = {
            'name': name,
            'age': age,
            'courses': [course.strip() for course in courses]
        }
        students.append(student)
        save_students(filename, students)
        print(f"学生 {name} 已添加!")

if __name__ == "__main__":
    main()

代码解析

  1. 加载现存学生列表
    load_students() 函数负责读取 JSON 文件中的现有数据,如果文件不存在,则返回一个空列表。

  2. 保存学生列表
    save_students() 函数负责将学生数据写入 JSON 文件。

  3. 主流程
    main() 函数是程序的核心,它循环提示用户输入学生信息,并实际将数据添加到列表和文件中。

流程图

下面是整个程序的逻辑流程图,展示了从用户输入到数据保存的过程。

flowchart TD
    A[开始] --> B{是否输入姓名?}
    B -->|是| C[输入信息]
    B -->|否| D[退出程序]
    C --> E[保存学生信息]
    E --> B
    D --> F[结束]

类图

接下来,我们可以设计一个简单的类图来表示学生的相关数据结构。

classDiagram
    class Student {
        +string name
        +int age
        +list courses
        +string get_info()
    }

    Student : +get_info()

在这个类图中,我们定义了一个 Student 类,其中包含姓名 name、年龄 age 和课程 courses 三个属性,以及一个方法 get_info() 来获取学生信息。

结论

通过本篇文章,我们探讨了如何使用 Python 循环添加数据到 JSON 文件,重点讲解了相关代码的实现过程及其逻辑。JSON 文件的易操作性使其成为数据存储的理想选择,而 Python 提供了简便的处理方式,适合各种应用场景。希望通过示例和图示的结合,使读者能够更好地理解 Python 对 JSON 数据的处理。

在实际应用中,我们可以进一步优化代码,例如增加异常处理、数据验证和更复杂的用户交互等,以提升程序的健壮性和用户体验。