Python逐行向文本文件中写入数据

20
我正在尝试将Python脚本的结果输出到一个文本文件中,其中每个输出应保存到一行。
f1=open('./output.txt', 'a')
f1.write(content + "\n")

当我用通常的记事本打开output.txt时,结果如下:

color amber color aqua color analysis color app color adobe color alive app

然而,当我用notepad++打开这个文件时,它看起来很正常,每个单词都保存在一行上。

如何使脚本逐行保存结果,以便在普通的记事本中显示相同的格式?


2
请参考 http://www.cs.toronto.edu/~krueger/csc209h/tut/line-endings.html,Windows 系统下应使用 '\r\n'。 - Paweł Kordowski
你使用的是哪个版本的Python安装程序? - AChampion
你能在Notepad++中显示结尾字符,以便我们可以看到发生了什么吗?(请参见此处以了解如何启用该功能) - rbaleksandar
如果Python文档写得好,你就不需要问这个问题。然而这不是你的错,而是Python文档质量太差了。 - Andrew S
2个回答

22

你可能需要了解操作系统相关的行分隔符,例如:

import os

with open('./output.txt', 'a') as f1:
    f1.write(content + os.linesep)

30
我因为官方文档对于os.linesep的说明而将其投票反对。 - rbaleksandar
5
很好的观点,但是如果原帖作者没有问题,那么他们不应该有问题,我的回复是针对建议写'\r\n'而做出的回应 - 使用os.linesep更加便携。 - AChampion
3
最佳解决方案!它比f1.write(content + "\n")更好。 - SergeyYu
1
我们绝对需要导入 os 吗? - Samuel Nde
1
如果你想使用os.linesep - 你需要这么做。 - AChampion
2
通常在使用 f1.write(content + "\n") 时,Python 会自动将 "\n" 转换为 os.linesep(https://dev59.com/jFoT5IYBdhLWcg3w4CiO)。问题应该出在其他地方... - Jean Paul

17

问题在于Notepad的行尾/编码设置错误。Notepad使用Windows的行尾符号\r\n,而您使用的是\n


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接