Python 中的文件输入输出:从创建到应用

Python 是一种高度可读且功能强大的编程语言,广泛应用于数据分析、机器学习、网站开发等领域。在这些领域中,文件输入输出(I/O)操作显得尤为重要。本文将通过一个实用的示例,深入探讨如何在 Python 中读写文件,并演示如何解决一个实际问题。

一、问题背景

假设我们要开发一个简单的学生管理系统,能够记录学生的信息,并将这些信息保存到文件中。我们需要实现以下功能:

  1. 输入学生的姓名、年龄和成绩,并保存到文件中。
  2. 从文件中读取学生信息,并打印输出。

二、设计思路

为了解决上述问题,我们可以采取以下步骤:

  1. 创建一个数据结构,存储学生的信息。
  2. 编写函数以将学生信息写入文件。
  3. 编写函数以从文件读取学生信息并输出。
  4. 运行这些功能并进行测试。

以下是我们将使用的简化的类图,描述了学生信息的结构。

erDiagram
    STUDENT {
        string name
        int age
        float grade
    }

三、实现步骤

3.1 创建学生信息类

我们首先创建一个学生类来保存学生的姓名、年龄和成绩信息。

class Student:
    def __init__(self, name, age, grade):
        self.name = name
        self.age = age
        self.grade = grade

    def __str__(self):
        return f"{self.name}, {self.age}, {self.grade}"

3.2 编写保存学生信息的函数

接下来我们编写一个函数,用于将学生信息写入文件。我们将使用 UTF-8 编码,以确保对所有字符的支持。

def save_students_to_file(students, filename='students.txt'):
    with open(filename, 'w', encoding='utf-8') as f:
        for student in students:
            f.write(f"{student.name},{student.age},{student.grade}\n")

3.3 编写读取学生信息的函数

我们还需要一个函数,从文件中读取学生信息并打印输出。

def load_students_from_file(filename='students.txt'):
    students = []
    try:
        with open(filename, 'r', encoding='utf-8') as f:
            lines = f.readlines()
            for line in lines:
                name, age, grade = line.strip().split(',')
                students.append(Student(name, int(age), float(grade)))
    except FileNotFoundError:
        print("文件未找到,请添加学生信息。")
    return students

四、主程序

我们将把所有功能整合到主程序中。

if __name__ == '__main__':
    students = []

    # 添加学生信息
    print("请输入学生信息(姓名,年龄,成绩),输入'q'退出:")
    while True:
        entry = input("学生信息:")
        if entry.lower() == 'q':
            break
        try:
            name, age, grade = entry.split(',')
            student = Student(name.strip(), int(age.strip()), float(grade.strip()))
            students.append(student)
        except ValueError:
            print("输入格式错误,请重新输入。")

    # 保存信息到文件
    save_students_to_file(students)

    # 从文件读取并输出学生信息
    loaded_students = load_students_from_file()
    print("\n已保存的学生信息:")
    for student in loaded_students:
        print(student)

五、执行结果

运行以上程序后,系统将提示用户输入学生的信息,如下所示:

请输入学生信息(姓名,年龄,成绩),输入'q'退出:
学生信息:Alice, 20, 88.5
学生信息:Bob, 21, 90.0
学生信息:q

保存到students.txt文件中的信息将如下所示:

Alice,20,88.5
Bob,21,90.0

随后,程序将从文件读取并打印出已保存的学生信息:

已保存的学生信息:
Alice, 20, 88.5
Bob, 21, 90.0

六、总结

本文详细介绍了如何在 Python 中进行文件的输入输出,通过创建简单的学生管理系统为例,演示了如何将学生信息写入文件并从中读取。我们通过使用类、文件操作等内容,掌握了基本的 Python I/O 技术。

实际开发中,文件 I/O 是不可或缺的技能,能够帮助我们处理大量数据,为后续的数据分析和处理打下基础。希望本文能为你的学习提供帮助,鼓励你在 Python 的世界中不断探索与实践。