兼容不同操作系统的换行约定
\n\r\n\rPython 在文本模式下会自动将这些转换为 \n(通用换行模式),但仍然保留它,因为:
server = nginx port = 8080 timeout = 30 第1行:"server = nginx\n" 第2行:"\n" ← 这是一个空行 第3行:"port = 8080\n" 第4行:"timeout = 30\n" with open('config.txt') as f: lines = f.readlines() print([repr(line) for line in lines]) [ 'server = nginx\n', '\n', # ← 明确表示“这里有一行,内容为空” 'port = 8080\n', 'timeout = 30\n' ] 👉 你能清晰知道: 总共 4 行; 第 2 行是空行('\n'); 如果你要跳过空行,可以写: Python 编辑 for line in lines: if line.strip() == '': continue # 跳过空行 那么 readlines() 返回: Python 编辑 [ 'server = nginx', '', # ← 这是空行去掉了 \n 'port = 8080', 'timeout = 30' ] 中间的 \n 表示“一个独立的空行”,可能是为了视觉分隔; 如果你只看到 '',你知道它是“有意的空行”还是“数据缺失”吗? 保留 \n 就等于保留了原始作者的排版意图。
line.lstrip()去掉左边空白,包括左边是换行符,这种"\naaa"
换行符统一是"\n",strip之后就变成空字符串""
>>> bool("")空字符串默认是假
False
>>> bool("\n") 而"\n"是真
True
>>> bool(" ")
True
# 处理空行时,'\n'.lstrip() 会移除换行符,变成空字符串 ''
fo.write('')会是什么?这个可以过滤空行
fo.write('') 会什么都不写入,文件大小为0,空 。