为什么在Python中向文本文件写入换行符不起作用?

为什么在Python中向文本文件写入换行符不起作用?,python,text-files,newline,Python,Text Files,Newline,我试图将列表保存到文本文件中,将每个句子放在一行上。但为什么这些代码对我不起作用?任何人多谢各位 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() 您正在打

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

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
中每个字符串的文件,但没有关闭它,这可能是导致错误的原因(您没有提到)

一起使用,不要麻烦关闭文件(也不要命名文件引用
文件
,因为它会隐藏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”参数除了确保下一个输入集从下一行开始外,什么也做不了。

即使OP关闭了它,也只有一行,因为使用写访问权限打开(
'w'
)将覆盖现有内容。@cdarke确实,我错过了这一点。我确定了我的答案。