推荐用 with open() 安全读取文件,需检查路径权限、指定 encoding='utf-8' 防乱码,按文件大小选择 read()/readlines()/for line in f,并对空行、注释做清理,结构化数据优先用 csv/json 模块解析。

使用 with open() 读取文件是 Python 中最推荐的方式,它能自动处理文件关闭,即使发生异常也不会导致文件句柄泄漏。
确保文件存在且有读取权限
在打开前,可先用 os.path.exists() 或 pathlib.Path().exists() 检查路径有效性;若路径错误或无权限,open() 会直接抛出 FileNotFoundError 或 PermissionError。建议用 try...except 包裹,明确提示问题原因:
- 避免静默失败,比如不加异常处理就让程序崩溃
- 对用户友好:提示“文件不存在”比只显示 traceback 更清晰
指定正确的编码格式(尤其是中文文本)
默认编码依赖系统(如 Windows 常为 cp1252),读取 UTF-8 编码的中文文件时容易报 UnicodeDecodeError。显式传入 encoding='utf-8' 是稳妥做法:
- 常见错误:用默认编码读取记事本保存的 UTF-8 文件(带 BOM 或无 BOM 都可能出问题)
- 不确定编码时,可用
chardet库检测,但生产环境建议统一用 UTF-8 保存源文件
按需选择读取方式:read()、readlines() 还是逐行迭代
with open(...) 返回文件对象,后续操作决定内存占用和适用场景:
-
小文件全文读取:用
f.read()得到完整字符串,适合配置、JSON、短日志等 -
需要按行处理且内容不多:用
f.readlines()得到行列表(含换行符),注意会一次性加载全部内容到内存 -
大文件或流式处理:直接
for line in f:迭代,内存友好,每轮只读一行
不修改原文件的前提下,安全读取后做进一步处理
读取只是第一步。常见后续操作包括去除空白行、分割字段、解析 JSON 等。注意:
line.strip()可去掉首尾空格和换行符,避免误判空行- 若文件含空行或注释(如以
#开头),可在循环中跳过:if not line.strip() or line.strip().startswith('#'): continue - 解析结构化内容(如 CSV、JSON)建议用专用模块(
csv、json),而非手动split()
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











