📁 Python 文件操作教程

从零开始掌握文件的读写操作

🎯 一、什么是文件?

在计算机中,文件是存储在磁盘上的数据集合。就像现实生活中的文件夹和文档一样,电脑中的文件用来永久保存信息。

📄

文件 = 存储数据的容器

文件可以存储文本、图片、音频、视频等各种数据

💡 为什么需要文件?
• 程序运行时的数据存储在内存中,程序结束后会消失
• 文件可以永久保存数据,即使关机也不会丢失
• 方便数据的共享和传输

常见的文件类型

📝
.txt
文本文件
📊
.csv
数据文件
🐍
.py
Python代码
📋
.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),否则可能导致数据丢失或文件被占用!

⚙️ 三、文件操作参数详解

📌 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()

📝 基本语法

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'
🎓 学习建议:
• 多动手实践,尝试读写不同类型的文件
• 养成使用 with 语句的好习惯
• 注意文件路径和编码问题
• 处理文件时要考虑异常情况