Python文本读写换行符处理核心是open()的newline参数与文件模式配合:文本模式默认启用通用换行符支持,读时统一转\n、写时转系统默认;设newline=""可禁用转换;二进制模式完全不处理;print()自动加\n而write()需手动添加。

Python 文本读写时换行符的处理,核心在于 open() 的 newline 参数 和 文件打开模式(text vs binary) 的配合。默认情况下 Python 会自动转换换行符,但具体行为取决于平台、模式和参数设置。
文本模式下默认启用换行符标准化(universal newlines)
以文本模式(如 "r"、"w")打开文件时,Python 默认启用“通用换行符支持”:
- 读取时,
\r\n(Windows)、\r(旧 Mac)、\n(Unix/Linux/macOS)都会被统一转为\n; - 写入时,
\n会被自动转换为当前操作系统的默认换行符(如 Windows 写为\r\n,Linux 写为\n); - 这种转换由
newline参数控制,默认值为None,即启用自动转换。
显式控制换行符:设置 newline=""
若需**完全禁用换行符转换**(例如处理混合换行符的配置文件、保留原始格式),应显式指定 newline="":
- 读取时,所有换行符原样保留(
\r\n不变,不会转成\n); - 写入时,
\n不再被转义,直接写入字节b'\n'; - 注意:
newline=""仅在文本模式下合法,且必须与encoding同时使用(不能用于二进制模式)。
二进制模式彻底绕过换行符处理
用 "rb" 或 "wb" 打开文件时,Python 完全不干预换行符:
系统特色及功能简介,主要包括以下方面: 合一:包括语言、模板风格、用户群;此版本内订简体、繁体、英文于一体;可另增设其它语言选项;模板风格指可以存在多界面的情况下进行界面互换;用户群指可写于单用户版本,也可用于多用户商城版本,具体设置可通过会员组权限修改 会员组定制:系统初安装时,内订6级会员分组,即 游客组、管理员组、VIP用户组、柜台用户组、柜台VIP用户组;此6级会员组不可以删除。另管理
立即学习“Python免费学习笔记(深入)”;
- 读出的是
bytes,内容与文件字节完全一致; - 写入的
bytes也原样落盘,无任何转换; - 适合处理非文本数据、需要精确控制换行符、或跨平台保持一致性的场景(如生成脚本、协议数据)。
写入时避免重复换行:print() 与 write() 的区别
常见误区是混用 print() 和 .write() 导致空行增多:
-
print("line", file=f)默认末尾加\n(可设end=""关闭); -
f.write("line\n")需手动添加换行符,否则不换行; - 若已用
write("line\n"),再调用print(file=f)就会多出一个空行。









