📁 现实世界的数据不是储存在变量里,而是存储在文件中。掌握文件操作,是你成为 Python 能手的第一步。
✅ 本文目标
- 学会打开/读取/写入
.txt
文件 - 使用
csv
模块处理结构化数据 - 编写一个“自动备份”脚本
- 实战项目:任务清单文件管理器(含追加、清空、导出)
📂 一、基础文件操作:读写 .txt 文件
📥 写入文本文件
with open("todo.txt", "w", encoding="utf-8") as f:
f.write("任务1:学习 Python\n")
f.write("任务2:读一本书\n")
"w"
表示写入模式(会清空原内容)encoding="utf-8"
是好习惯,防乱码
📤 读取文件内容
with open("todo.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)
📄 按行读取(去除换行符)
with open("todo.txt", "r", encoding="utf-8") as f:
lines = [line.strip() for line in f.readlines()]
print(lines) # ['任务1:学习 Python', '任务2:读一本书']
📌 追加内容
with open("todo.txt", "a", encoding="utf-8") as f:
f.write("任务3:写日记\n")
🧪 实战一:写一个“自动备份工具”
import os
from datetime import datetime
import shutil
def auto_backup(filename):
if not os.path.exists(filename):
print("文件不存在")
return
now = datetime.now().strftime("%Y%m%d_%H%M%S")
backup_name = f"{filename}.{now}.bak"
shutil.copy(filename, backup_name)
print(f"✅ 已备份为:{backup_name}")
auto_backup("todo.txt")
输出:
📊 二、处理结构化数据:读写 .csv 文件
import csv
# 写入 CSV 文件
with open("scores.csv", "w", newline='', encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow(["姓名", "分数"])
writer.writerow(["张三", 95])
writer.writerow(["李四", 88])
# 读取 CSV 文件
with open("scores.csv", "r", encoding="utf-8") as f:
reader = csv.reader(f)
for row in reader:
print(row)
输出:
🛠 实战二:任务清单管理器
import csv
def add_task(task):
with open("todo.txt", "a", encoding="utf-8") as f:
f.write(task + "\n")
def list_tasks():
with open("todo.txt", "r", encoding="utf-8") as f:
return [line.strip() for line in f]
def clear_tasks():
with open("todo.txt", "w", encoding="utf-8") as f:
f.write("")
def export_to_csv():
tasks = list_tasks()
with open("todo_export.csv", "w", newline='', encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow(["编号", "任务"])
for i, task in enumerate(tasks, 1):
writer.writerow([i, task])
🧪 示例:
add_task("完成项目文档")
add_task("练习算法题")
export_to_csv()
生成 todo_export.csv
文件如下:
💡 拓展任务
- 添加日期记录字段
- 任务状态管理(完成/未完成)
- 封装为命令行工具
🧠 总结一句话
文件才是程序的现实世界接口,掌握它,你就能把数据从内存送到硬盘,从一人用到多人共享。