5、文件读写全攻略:从 .txt 到 .csv,自动备份你的小世界

0 阅读2分钟

📁 现实世界的数据不是储存在变量里,而是存储在文件中。掌握文件操作,是你成为 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")

输出:

image.png


📊 二、处理结构化数据:读写 .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)

输出:

image.png


🛠 实战二:任务清单管理器

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 文件如下:

image.png


💡 拓展任务

  1. 添加日期记录字段
  2. 任务状态管理(完成/未完成)
  3. 封装为命令行工具

🧠 总结一句话

文件才是程序的现实世界接口,掌握它,你就能把数据从内存送到硬盘,从一人用到多人共享。