【小学生都能看懂的Python入门教程】第三章:文件操作与异常处理 (读写文件、异常捕获) 文件操作——程序员的日记本:代码界的记忆水晶
文件操作——程序员的日记本:代码界的记忆水晶
一、打开文件:与记忆水晶建立连接
1. 基础开锁咒语:open()
# 打开一个名为"秘密花园.txt"的日记本
diary = open("秘密花园.txt", "a+", encoding="utf-8") # a+模式:可以续写和读取
文件模式解密:
模式 | 咒语效果 | 生活场景 |
---|---|---|
r | 只读模式(默认) | 查看旧日记 |
w | 写入模式(清空重写) | 启用新日记本 |
a | 追加模式(续写) | 在日记本尾页添加 |
x | 创建新文件(防覆盖) | 买带锁的新日记本 |
2. 安全关闭术:with的魔法结界
# 更优雅的打开方式(自动关日记本)
with open("秘密花园.txt", "r", encoding="utf-8") as diary:
content = diary.read()
# 退出with区块后自动关闭文件,避免忘记关本子导致墨水蒸发(数据丢失)
为什么程序员总用with?
因为人类的记忆和金鱼的7秒差不多——总忘记close()
二、读取记忆:三种阅读姿势
1. read():暴风吸入式
with open("日记.txt", "r", encoding="utf-8") as f:
print(f.read()) # 一次性读完,适合短日记
# 输出:2023-10-01 今天学会了用Python控制空调...(后面省略500字)
2. readline():优雅细品式
# 适合逐行回忆
with open("日记.txt", "r", encoding="utf-8") as f:
print(f.readline()) # 第一行
print(f.readline()) # 第二行
3. readlines():清单整理式
# 把日记变成待办清单
with open("日记.txt", "r", encoding="utf-8") as f:
lines = f.readlines() # 返回列表
print("今日待办:", lines[3]) # 输出第四行内容
阅读小剧场:
read():一口吞下整个蛋糕
readline():用叉子小块品尝
readlines():把蛋糕切成整齐的小块
三、写入记忆:两种记录魔法
1. write():随心记录术
with open("心情日记.txt", "a", encoding="utf-8") as f:
f.write("\n2023-10-02 终于修复了那个祖传bug!")
2. writelines():批量搬运术
todo_list = ["买咖啡\n", "写周报\n", "假装加班\n"]
with open("待办事项.txt", "w", encoding="utf-8") as f:
f.writelines(todo_list) # 批量写入
冷知识:在Windows系统换行是\r\n
,但Python会自动转换——这就是跨平台魔法
四、实战演练:AI日记小助手
功能说明
- 记录每日心情和事件
- 自动添加日期时间
- 查看历史日记
- 数据持久化存储
代码全解析
import datetime
def diary_assistant():
"""你的24小时电子树洞"""
while True:
print("\n=== 日记小助手 ===")
print("1. 写新日记")
print("2. 读旧日记")
print("3. 退出程序")
choice = input("请选择:")
if choice == "1":
mood = input("今日心情表情(😊/😭/🤔):")
event = input("记录今日大事件:")
timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
with open("my_diary.txt", "a", encoding="utf-8") as f:
f.write(f"\n[{timestamp}] {mood} {event}")
print("日记已存入记忆水晶!")
elif choice == "2":
try:
with open("my_diary.txt", "r", encoding="utf-8") as f:
print("\n=== 记忆回廊 ===")
print(f.read())
except FileNotFoundError:
print("你还没有写过日记哦!")
elif choice == "3":
print("日记本已加密保存,下次见!")
break
else:
print("输入错误,请重新选择!")
if __name__ == "__main__":
diary_assistant()
运行示例:
=== 日记小助手 ===
1. 写新日记
2. 读旧日记
3. 退出程序
请选择:1
今日心情表情(😊/😭/🤔):🤔
记录今日大事件:思考为什么print('Hello')能带来如此多快乐
日记已存入记忆水晶!
五、文件冷知识档案馆
encoding="utf-8"
是防乱码护身符- 二进制模式可以处理图片(
rb
/wb
) - 文件指针像书签,tell()查看位置,seek()移动位置
- CSV文件本质是带逗号的文本文件
为什么程序员要学文件操作?
因为内存像金鱼的记忆——断电就消失,而文件是永久存储的魔法石
结语:从记忆碎片到时光胶囊
现在你已经掌握:
✅ 文件的打开与关闭仪式
✅ 三种读取记忆的魔法
✅ 两种写入记忆的咒语
✅ 完整日记助手的开发
当你能用代码记录生活、保存游戏进度甚至备份重要数据时,就会明白文件操作是数字世界的时光机。记住,好的文件操作就像写日记——清晰分类、定期整理、安全保存。
下期预告:《异常处理——给未知一个拥抱:程序员的急诊室日记》
课后彩蛋:在日记助手中添加以下代码,获得隐藏功能:
# 在写入部分添加
if "bug" in event.lower():
f.write("\n【系统检测到关键词】今日bug已自动转发给组长")
# 试试记录"今天又写了个神奇的bug"
代码学习,前言技术分享,深度分析编程技术,普及科普编程技术,天天都要敲代码
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)