文件读写
open、with、路径 pathlib 入门。
文件读写
这一课你将能做到
- 用
with open(...)正确读写文本文件,说清为什么 with 能自动关闭文件 - 用 pathlib 处理路径:拼接、判断存在、创建目录、批量列举文件
- 读懂并写出「逐行处理大文件」和「读写 JSON」这两个高频场景的代码
为什么要学
前面几课的数据都活在内存里,程序一关全没了。文件读写是脚本「记住东西」的第一种方式:批量处理日志、导出报表、保存配置、持久化爬虫结果,全靠它。而且「文件 + 循环 + 字符串」三件套正是 Python 脚本最经典的形态——第 12 课的综合练习直接用这一课的产出。
人话:open 就是找图书管理员借书(打开文件),read 是翻阅,write 是往里写,close 是还书。with 语句就是「自动还书提醒」——不管中途发生什么,出了作用域管理员一定把书收回去。
先建立图像
open() 的三种基本模式:
r → read 读(文件必须存在,光标在开头)
w → write 写(清空原内容!不存在则新建)
a → append 追加(保留原内容,写在末尾)
加 b 是二进制模式:rb / wb(图片、视频用)
文本模式强烈建议显式指定 encoding="utf-8"
with 语句结构:
with open("demo.txt", "w", encoding="utf-8") as f:
f.write("内容") # with 块内:文件处于打开状态
# with 块外:文件必定已自动关闭
跟着做
步骤 1:写入第一个文件
新建 files_demo.py,在脚本所在目录运行:
with open("demo.txt", "w", encoding="utf-8") as f:
f.write("第一行\n")
f.write("第二行\n")
f.writelines(["第三行\n", "第四行\n"]) # 接收字符串列表
print("写入完成")
运行后打开脚本目录里的 demo.txt,应有 4 行文本。注意 w 模式每次运行都会清空重写,想保留旧内容追加用 a 模式:
with open("demo.txt", "a", encoding="utf-8") as f:
f.write("追加的第五行\n")
输出(终端):
写入完成
步骤 2:读文件的三种方式
# 方式一:一次性读全部(小文件)
with open("demo.txt", "r", encoding="utf-8") as f:
content = f.read()
print(repr(content[:12])) # '第一行\n第二行\n第三' —— \n 也在里面
# 方式二:按行读成列表
with open("demo.txt", "r", encoding="utf-8") as f:
lines = f.readlines() # 每行末尾带着 \n
print(len(lines)) # 5
# 方式三:逐行遍历(推荐,内存友好,文件多大都不怕)
with open("demo.txt", "r", encoding="utf-8") as f:
for line in f:
print(line.strip()) # strip 去掉行尾换行符
输出:
'第一行\n第二行\n第三'
5
第一行
第二行
第三行
第四行
追加的第五行
步骤 3:with 的意义——亲眼验证自动关闭
f = open("demo.txt", "r", encoding="utf-8")
print(f.closed) # False:文件开着
f.close()
print(f.closed) # True
# 手动 open 的问题:中间一旦抛异常,close 就执行不到了
# with 则保证「无论是否异常」都关闭:
with open("demo.txt", "r", encoding="utf-8") as f:
print(f.closed) # False
print(f.closed) # True —— 出了 with 块自动关了