在实际开发中,我们经常需要处理各种文件,比如日志文件、配置文件、数据文件等。Python 提供了非常方便的内置函数来操作文件,包括读取、写入、追加、删除等。
本文将带你从零开始掌握:
- 如何打开和关闭文件
- 如何读取和写入文本文件
with
语句的使用- 实战示例讲解
一、为什么需要文件操作?
程序运行时的数据通常保存在内存中,一旦程序结束或计算机重启,这些数据就会丢失。为了持久化存储数据,我们需要使用文件。
通过文件操作,我们可以:
- 读取已有数据;
- 保存计算结果;
- 记录日志信息;
- 配置程序参数等。
二、基本文件操作流程
Python 中进行文件操作的基本流程如下:
- 使用
open()
打开文件; - 使用
read()
/write()
等方法操作文件; - 使用
close()
关闭文件(或使用with
自动管理);
三、打开文件:open() 函数
✅ 基本语法:
file = open('文件路径', '模式')
常见的文件打开模式有:
模式 | 描述 |
---|---|
'r' |
只读模式(默认),文件必须存在 |
'w' |
写入模式,覆盖已有内容,若文件不存在则创建 |
'a' |
追加模式,在文件末尾添加内容 |
'r+' |
读写模式 |
'b' |
二进制模式(如 'rb' , 'wb' ) |
四、读取文件内容
示例 1:一次性读取全部内容
file = open('example.txt', 'r')
content = file.read()
print(content)
file.close()
示例 2:逐行读取内容
file = open('example.txt', 'r')
for line in file:
print(line.strip()) # 去除每行末尾的换行符
file.close()
五、写入文件内容
示例 1:写入新内容(覆盖原有)
file = open('example.txt', 'w')
file.write("这是第一行\n")
file.write("这是第二行\n")
file.close()
⚠️ 注意:
'w'
模式会清空文件原有内容!
示例 2:追加内容(不覆盖)
file = open('example.txt', 'a')
file.write("这是新增的一行\n")
file.close()
六、使用 with 语句自动管理文件
为了避免忘记调用 close()
导致资源泄露,推荐使用 with
语句自动管理文件的打开与关闭。
✅ 推荐写法:
with open('example.txt', 'r') as file:
content = file.read()
print(content)
# 文件在此处已自动关闭
示例:读写结合
with open('example.txt', 'r+') as file:
content = file.read()
file.write("\n这是新添加的内容")
print("当前内容为:\n", content)
七、常见文件操作函数与方法
方法名 | 功能说明 |
---|---|
read() |
读取整个文件内容 |
readline() |
读取一行 |
readlines() |
读取所有行并返回列表 |
write(str) |
将字符串写入文件 |
writelines(list) |
将字符串列表写入文件 |
seek(offset) |
设置文件指针位置 |
tell() |
获取当前文件指针位置 |
close() |
关闭文件 |
八、实战练习:学生信息管理系统(文件版)
下面是一个完整的示例,演示如何将学生信息保存到文件中,并支持查看、添加功能。
💻 示例代码:
def add_student(name, score):
with open("students.txt", "a") as file:
file.write(f"{name},{score}\n")
def show_students():
try:
with open("students.txt", "r") as file:
lines = file.readlines()
for line in lines:
name, score = line.strip().split(',')
print(f"姓名:{name},成绩:{score}")
except FileNotFoundError:
print("暂无学生信息。")
# 主菜单
while True:
print("\n1. 添加学生\n2. 查看学生\n3. 退出")
choice = input("请选择操作:")
if choice == "1":
name = input("请输入学生姓名:")
score = input("请输入学生成绩:")
add_student(name, score)
elif choice == "2":
show_students()
elif choice == "3":
break
else:
print("无效选择,请重新输入。")
运行效果示例:
1. 添加学生
2. 查看学生
3. 退出
请选择操作:1
请输入学生姓名:张三
请输入学生成绩:90
九、拓展建议(进阶练习)
如果你已经完成了上面的小项目,还可以尝试以下进阶任务来挑战自己:
- 修改和删除记录:实现编辑或删除某位学生的功能;
- JSON 文件格式:将学生信息以 JSON 格式保存,便于后续解析;
- 图形界面版本:使用
tkinter
制作带 GUI 的文件管理系统; - 异常处理增强:对文件不存在、格式错误等情况做更完善的处理。
十、总结对比表格
操作类型 | 方法 | 说明 |
---|---|---|
打开文件 | open() |
支持多种模式(r, w, a 等) |
读取内容 | read() , readline() , readlines() |
不同方式读取文件内容 |
写入内容 | write() , writelines() |
写入字符串或字符串列表 |
自动管理 | with open(...) as f: |
自动关闭文件,推荐使用 |
关闭文件 | close() |
必须手动调用,否则可能造成资源泄漏 |
十一、结语
掌握了文件操作之后,你就可以编写能够持久保存数据的程序了,这为你今后开发更复杂的应用(如日志系统、数据库工具、爬虫等)打下了坚实的基础。
📌 建议:
- 多动手练习,尝试自己设计一些带文件操作的小程序;
- 学会使用调试工具查看文件内容变化;
- 结合函数、循环、条件判断等知识写出结构良好的代码。
如果你喜欢这篇博文,别忘了点赞、收藏并分享给更多想学 Python 的朋友~有任何问题也欢迎留言讨论 😊