🎯 一、什么是文件?
在计算机中,文件是存储在磁盘上的数据集合。就像现实生活中的文件夹和文档一样,电脑中的文件用来永久保存信息。
文件 = 存储数据的容器
文件可以存储文本、图片、音频、视频等各种数据
💡 为什么需要文件?
• 程序运行时的数据存储在内存中,程序结束后会消失
• 文件可以永久保存数据,即使关机也不会丢失
• 方便数据的共享和传输
• 程序运行时的数据存储在内存中,程序结束后会消失
• 文件可以永久保存数据,即使关机也不会丢失
• 方便数据的共享和传输
常见的文件类型
📝
.txt文本文件
📊
.csv数据文件
🐍
.pyPython代码
📋
.json配置文件
🔄 二、文件操作的基本流程
操作文件就像使用一个保险柜,需要三个步骤:
🔓
1. 打开open()
→
✍️
2. 读/写read() / write()
→
🔒
3. 关闭close()
📖 示例1:读取文件内容
# 1. 打开文件(只读模式)
file = open('student.txt', 'r')
# 2. 读取文件内容
content = file.read()
print(content)
# 3. 关闭文件
file.close()
✏️ 示例2:写入文件内容
# 1. 打开文件(写入模式)
file = open('output.txt', 'w')
# 2. 写入内容
file.write('Hello, Python!\n')
file.write('这是第二行内容')
# 3. 关闭文件
file.close()
⚠️ 重要提醒:
使用完文件后一定要关闭(close),否则可能导致数据丢失或文件被占用!
使用完文件后一定要关闭(close),否则可能导致数据丢失或文件被占用!
⚙️ 三、文件操作参数详解
📌 open() 函数的模式参数
| 模式 | 说明 | 特点 |
|---|---|---|
| 'r' | 只读模式(read) | 文件必须存在,否则报错 |
| 'w' | 写入模式(write) | 会覆盖原有内容,文件不存在则创建 |
| 'a' | 追加模式(append) | 在文件末尾添加内容,文件不存在则创建 |
| 'r+' | 读写模式 | 可以同时读和写,文件必须存在 |
| 'w+' | 读写模式 | 会先清空文件,然后可以读写 |
| 'a+' | 读写模式 | 追加写入,也可以读取 |
🔍 常用读取方法
# read() - 读取全部内容
content = file.read()
# readline() - 读取一行
line = file.readline()
# readlines() - 读取所有行,返回列表
lines = file.readlines()
# 示例:逐行读取
file = open('data.txt', 'r')
for line in file:
print(line.strip()) # strip()去除换行符
file.close()
✍️ 常用写入方法
# write() - 写入字符串
file.write('单行内容\n')
# writelines() - 写入字符串列表
lines = ['第一行\n', '第二行\n', '第三行\n']
file.writelines(lines)
❌ 'w' 模式 - 覆盖写入
file = open('test.txt', 'w')
file.write('新内容')
file.close()
# 原有内容被清空!
✅ 'a' 模式 - 追加写入
file = open('test.txt', 'a')
file.write('新内容')
file.close()
# 原有内容保留!
🌟 四、使用 with 语句管理文件
with 语句是 Python 中推荐的文件操作方式,它可以自动关闭文件,即使发生错误也能正确关闭。
✨ with 语句的优势:
• 自动管理文件的打开和关闭
• 代码更简洁、更安全
• 即使发生异常也能正确释放资源
• 不需要手动调用 close()
• 自动管理文件的打开和关闭
• 代码更简洁、更安全
• 即使发生异常也能正确释放资源
• 不需要手动调用 close()
📝 基本语法
with open('文件名', '模式') as 文件对象:
# 在这里进行文件操作
# 代码块结束后自动关闭文件
🔍 示例:使用 with 读取文件
# 读取整个文件
with open('student.txt', 'r', encoding='utf-8') as file:
content = file.read()
print(content)
# 文件自动关闭,无需 file.close()
# 逐行读取
with open('data.txt', 'r', encoding='utf-8') as file:
for line in file:
print(line.strip())
✏️ 示例:使用 with 写入文件
# 写入文件
with open('output.txt', 'w', encoding='utf-8') as file:
file.write('姓名:张三\n')
file.write('年龄:18\n')
file.write('成绩:95')
# 追加内容
with open('log.txt', 'a', encoding='utf-8') as file:
file.write('新的日志记录\n')
🎯 同时操作多个文件
# 复制文件内容
with open('source.txt', 'r', encoding='utf-8') as source, \
open('target.txt', 'w', encoding='utf-8') as target:
content = source.read()
target.write(content)
print('文件复制完成!')
❌ 传统方式
file = open('test.txt', 'r')
try:
content = file.read()
print(content)
finally:
file.close()
# 代码冗长
✅ with 语句
with open('test.txt', 'r') as file:
content = file.read()
print(content)
# 简洁优雅!
💡 编码参数 encoding
• 处理中文时,建议加上
• 避免出现乱码问题
• 示例:
• 处理中文时,建议加上
encoding='utf-8'• 避免出现乱码问题
• 示例:
open('file.txt', 'r', encoding='utf-8')
🚀 五、综合实战示例
📊 示例:学生成绩管理系统
# 写入学生成绩
students = [
'张三,85,90,88',
'李四,92,87,95',
'王五,78,82,80'
]
with open('scores.txt', 'w', encoding='utf-8') as file:
file.write('姓名,语文,数学,英语\n')
for student in students:
file.write(student + '\n')
# 读取并计算平均分
with open('scores.txt', 'r', encoding='utf-8') as file:
lines = file.readlines()
for i, line in enumerate(lines):
if i == 0: # 跳过标题行
continue
parts = line.strip().split(',')
name = parts[0]
scores = [int(x) for x in parts[1:]]
average = sum(scores) / len(scores)
print(f'{name} 的平均分:{average:.2f}')
📝 示例:日志记录
import datetime
def write_log(message):
"""写入日志信息"""
current_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
log_entry = f'[{current_time}] {message}\n'
with open('app.log', 'a', encoding='utf-8') as file:
file.write(log_entry)
# 使用示例
write_log('程序启动')
write_log('用户登录成功')
write_log('数据保存完成')
🎮 互动演示
点击按钮查看不同操作模式的效果:
点击上方按钮查看示例...
📚 六、知识点总结
🎯 核心要点:
1. 文件操作三步骤:打开 → 读写 → 关闭
2. 常用模式:
• 'r' - 只读(文件必须存在)
• 'w' - 写入(覆盖原内容)
• 'a' - 追加(保留原内容)
3. 推荐使用 with 语句:
• 自动关闭文件
• 代码更安全、更简洁
• 异常情况下也能正确释放资源
4. 编码问题:
• 处理中文时加上 encoding='utf-8'
1. 文件操作三步骤:打开 → 读写 → 关闭
2. 常用模式:
• 'r' - 只读(文件必须存在)
• 'w' - 写入(覆盖原内容)
• 'a' - 追加(保留原内容)
3. 推荐使用 with 语句:
• 自动关闭文件
• 代码更安全、更简洁
• 异常情况下也能正确释放资源
4. 编码问题:
• 处理中文时加上 encoding='utf-8'
🎓 学习建议:
• 多动手实践,尝试读写不同类型的文件
• 养成使用 with 语句的好习惯
• 注意文件路径和编码问题
• 处理文件时要考虑异常情况
• 多动手实践,尝试读写不同类型的文件
• 养成使用 with 语句的好习惯
• 注意文件路径和编码问题
• 处理文件时要考虑异常情况