13_输入输出文件与路径
读取键盘输入、写入文本文件并安全关闭资源。
Python 基础专题 13:输入输出、文件与路径
学习目标:读取键盘输入、写入文本文件并安全关闭资源。
核心知识
input(prompt) 读取一行并返回 str,即使用户键入 12 仍是字符串。print 的 sep 和 end 可控制分隔与结尾。外部输入需要先清理和校验,再转成所需类型;转换失败可捕获 ValueError 并提示重新输入。
from pathlib import Path
path = Path("example.txt")
path.write_text("第一行\n第二行\n", encoding="utf-8")
with path.open("r", encoding="utf-8") as stream:
for number, line in enumerate(stream, start=1):
print(number, line.rstrip("\n"))
with 在正常或异常退出时都会关闭文件。文本模式按编码处理 str;二进制模式 rb、wb 处理 bytes。w 会截断已有文件,a 会追加,x 只在文件不存在时创建。需要避免覆盖原文件时,先选择合适模式。Path("example.txt") 是相对当前工作目录的路径,不一定相对脚本文件。
一次 read_text() 会把全部内容读入内存;大文件逐行读更稳妥。写配置或状态文件时,还要考虑写入中断、权限与并发修改,不能仅靠一次 write_text 保证原子性。
逐步理解
对 w、a、x 做一次小实验:先写入“甲”,再分别用不同模式打开并写“乙”,观察覆盖、追加和文件已存在错误。文件读取后可能包含末尾换行,rstrip("\n") 只去掉换行,而 strip() 会额外去掉首尾空格;处理用户数据时不要无意删除有意义的空格。
动手练习
练习:读入文件并统计非空行。答案要点:在 with path.open(encoding="utf-8") 中逐行判断 line.strip(),为真时计数。