• ⏳ 课程时长: 90 分钟
  • 🎯 教学目标:
    • 🧠 理解内存 vs 硬盘:为什么需要存文件?
    • ✍️ 写入文件:模式 'w''a' 的区别。
    • 📖 读取文件:模式 'r' 把数据读回来。
    • 🛡️ 安全写法:使用 with open 自动关闭文件。

📖 课程内容

1. 🤔 引入:金鱼记忆 vs 永久笔记 (10 分钟)

  • 变量 (Variables) 就像金鱼的记忆 🐟:程序一关,瞬间失忆。
  • 文件 (Files) 就像刻在石头上的字 🗿:几百年后还在那里。

我们要学的,就是如何让 Python 打开一个 txt 文件,往里面写字,或者读里面的字。

2. 🛡️ 安全咒语:with open (15 分钟)

以前打开文件要三步:打开 -> 读写 -> 关闭。 新手最容易忘记关闭文件,导致文件损坏!💥

Python 发明了一种“自动门”写法:with open。 只要代码走出了缩进,文件就会自动关闭,超级安全!

  • 📜 语法:

    with open("文件名.txt", "模式") as f:
        # 这里写文件操作
        # f 就像是这个文件的“手柄”
    
    # 出了缩进,文件自动关闭

3. ✍️ 写入魔法:模式 ‘w’ (Write) (20 分钟)

我想写一封信给未来的自己。

  • 模式 'w': 写入模式。
    • ⚠️ 警告: 如果文件已经存在,它会清空旧内容,重新写!(覆盖)
    • 如果文件不存在,它会自动创建
# 创建一个叫 letter.txt 的文件,并写入内容
with open("letter.txt", "w") as f:
    f.write("你好,未来的我!\n") # \n 是换行符,相当于按回车
    f.write("今天我学会了 Python 文件操作。\n")
    f.write("感觉自己酷毙了!")

print("信件已寄出(保存成功)!📮")

快去你的代码文件夹里看看,是不是多了一个 letter.txt

4. 📖 读取魔法:模式 ‘r’ (Read) (20 分钟)

现在,我要把信读出来。

  • 模式 'r': 读取模式。
    • 如果文件不存在,程序会报错 (FileNotFoundError)。
# 读取 letter.txt 的内容
try:
    with open("letter.txt", "r") as f:
        content = f.read() # 把文件里所有字,一口气读到 content 变量里
        print("--- 信的内容如下 ---")
        print(content)
        print("------------------")
except FileNotFoundError:
    print("❌ 找不到这封信!你是不是还没写?")

5. ➕ 追加魔法:模式 ‘a’ (Append) (15 分钟)

如果我不想清空旧的,只想在后面加一句话呢? 比如写日记,不能把昨天的擦掉呀!

  • 模式 'a': 追加模式。
    • 在文件末尾接着写,绝不删除旧内容。
# 往 letter.txt 后面补一句话
with open("letter.txt", "a") as f:
    f.write("\nPS: 记得做作业!") # \n 换行很重要,不然会挤在上一行屁股后面

print("补充内容已添加!")

6. ✨ 多元化场景实战 (10 分钟)

场景 A:🏆 游戏高分榜 每次玩完游戏,把分数记下来。

score = 1000
player = "勇者小明"

# 使用 'a' 模式,保留以前的高分
with open("highscore.txt", "a") as f:
    f.write(f"{player}: {score}\n") 

print("分数已记录!")

场景 B:📜 待办事项 (ToDo List) 读取清单,告诉我要做什么。 (假设目录下有一个 todo.txt,里面写着:吃饭、睡觉、打豆豆)

with open("todo.txt", "r") as f:
    lines = f.readlines() # 这个函数能把每一行变成列表的一个元素!

    print(f"你有 {len(lines)} 件事要做:")
    for task in lines:
        print("👉 " + task.strip()) # .strip() 用来去掉每行自带的换行符

💪 课堂大练兵 (5 分钟)

  1. 📝 秘密日记: 写一个程序,询问用户:“今天发生了什么?” 用户输入一段话。 程序把它保存到 diary.txt 里。(记得用追加模式 a,不然以前的日记就丢啦!)

📝 课程总结 (5 分钟)

  1. open(文件名, 模式):打开文件的钥匙。
  2. 'w':覆盖写(小心!会清空)。
  3. 'r':读取。
  4. 'a':追加写(写日记用这个)。
  5. with ... as f::自动关门,安全第一。

🏠 课后作业 (5 分钟)

  1. 📊 访问计数器: 创建一个文件 count.txt,里面只写一个数字 。 每次运行你的程序,就读取这个数字,把它 +1,然后再写回去。 打印:“你是第 X 位访客”。

  2. 🕵️‍♂️ 真正的勇者斗恶龙存档 (挑战题): 修改第 13 课的游戏。

    • 游戏开始时,尝试读取 save.txt,如果有时,恢复血量。
    • 游戏结束(或者玩家选择退出)时,把当前的 hero_hp 写入 save.txt
    • 这样你的勇者就可以休息,明天接着打了!

下节课预告: 现在我们学会了Python的大部分基础。 但是,在 Python 的世界里,还有很多“特殊的数据结构”,比如字典 (Dictionary)。 它就像一本真正的字典,你可以通过“名字”找到“分数”,通过“商品名”找到“价格”,而不需要去数索引。 下节课,我们将学习“超级查询机 – 字典”!📖🔍

下次见,记录者们!👋

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。