为什么在 Python 中无法将换行符写入文本文件?

Why is writing a newline to a text file not working in Python?

我正在尝试将列表保存到文本文件中,每个句子在一行中。但为什么这些代码对我不起作用?任何人?谢谢。

import codecs

text = ["good morning", "hello everybody"] 

for texts in text:
    file = codecs.open("newlinetest.txt", "w", "utf-8")
    print texts
    file.write(texts + "\n")

file.close()  

您正在为 text 中的每个字符串打开文件而没有关闭它,这可能是导致错误的原因(您没有提到)。

使用 with 并且不要为关闭文件而烦恼(也不要将文件引用命名为 file,因为它会隐藏 Python 的内置文件)。另请注意,您将需要使用 'a' 作为打开模式,以便始终附加到文件而不是截断它:

import codecs

text = ["good morning", "hello everybody"] 

with codecs.open("newlinetest.txt", "a", "utf-8") as my_file:  # better not shadow Python's built-in file
    for texts in text:
         print texts
         my_file.write(texts + "\n")
# no need to call my_file.close() at all

你只需要在循环外打开文件一次,你可以使用 str.join 来写,w 覆盖所以你覆盖每次迭代,只用列表中的最后一个元素结束写的:

import codecs

text = ["good morning", "hello everybody"]
with codecs.open("newlinetest.txt", "w", "utf-8") as f:
    f.write("\n".join(text))

由于您传递的是列表,因此 csv 模块非常适合您使用换行符作为分隔符来执行的操作:

text = ["good morning", "hello everybody"]
import csv
with codecs.open("newlinetest.txt", "w", "utf-8") as f:
    wr = csv.writer(f,delimiter="\n")
    wr.writerow(text)

还使用“\n\n”来引入换行间距,因为第一个“\n”参数不会执行任何操作,但会确保下一个输入集从下一行开始。