此问题已在此处有答案:
Python file.write creating extra carriage return(5个答案)
3小时前关闭
下面的代码为每次写入添加一个额外的空行(“\r”),而它应该在每次写入结束时只写入一行(“\r\n”)。我不知道为什么。
import os
with open("output", "w", encoding="utf-8") as f:
for i in range(10):
f.write(str(i) + os.linesep)
它写入文件:“0\r\r\n1\r\r\n2。..9\r\r\n”。我正在使用Python 3。9.16在Windows上。我是不是漏掉了什么?
编辑:我也在没有encoding=“utf-8”的情况下进行了测试,仍然出现了同样的问题。
2条答案
按热度按时间sr4lhrrt1#
您不需要直接使用
os.linesep
。在文本模式下打开文件进行写入时,会执行换行符转换,除非指定newline
设置将其关闭。事实上,
os.linesep
文档 * 特别警告您 * 不要这样做:不要使用 * os。linesep* 在写入以文本模式打开的文件时作为行结束符(默认值);在所有平台上使用单个
'\n'
。q1qsirdb2#