在python中打印到.txt文件时,有没有办法保留多行?

在python中打印到.txt文件时,有没有办法保留多行?,python,Python,原始代码如下所示: for i in top_k: print(template.format(labels[i], results[i])) 我将代码修改为: for i in top_k: outputFile = open('output.txt', 'w') print(template.format(labels[i], results[i]), file = outputFile) outputFile.close() 原始代码非常有效,因为它在控制

原始代码如下所示:

for i in top_k:
   print(template.format(labels[i], results[i]))
我将代码修改为:

for i in top_k:
    outputFile = open('output.txt', 'w')
    print(template.format(labels[i], results[i]), file = outputFile)
    outputFile.close()

原始代码非常有效,因为它在控制台中逐行打印。但是修改后的代码只将循环中最后一个输出到.txt文件中。据我所知,每次循环运行时,它都会替换文本,因此第一个文本将替换为第二个文本,依此类推。

使用
'a'
作为
打开的参数,而不是
'w'
。它附加而不是覆盖文件。

解决方案是使用
模式来附加文件

outputFile = open('output.txt', 'a')
for i in top_k:
    print(template.format(labels[i], results[i]), file = outputFile)
outputFile.close()
但是,我建议您使用pythonic方式,使用
with
逐行追加文件

with open("output.txt", "a") as outputFile :
    for i in top_k:
        outputFile.write(template.format(labels[i], results[i]), "\n")

您正在使用
w
模式打开文件,该模式首先打开并“截断”文件,您可以从内置文件的文档中看到这一点。这意味着它从文件的开头而不是结尾开始写入。如果要“附加”文本,应使用
a

outputFile=open('output.txt','a')
此外,您不希望每次迭代都打开和关闭文件,因为这项任务可能代价高昂,并会影响性能。我建议使用来管理文件上下文

打开('output.txt',a):
对于top_k中的i:
打印(template.format(标签[i],结果[i]),file=outputFile)

在循环的每次迭代中,您都在执行
open('output.txt','w')
,因此每次都会覆盖文件。用
'a'
打开它,或者将
open()
移到循环外部。我必须删除“\n”参数才能使其工作。我假设这是为了在每次迭代后创建新行?如果是这样,我建议您使用
print()