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

原始代码如下所示:

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 文件。据我所知,每次循环运行时它都会替换文本,因此第一个文本将替换为第二个文本,依此类推。


莫回无
浏览 110回答 3
3回答

饮歌长啸

解决方案是使用a模式附加文件。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")

江户川乱折腾

用作'a'参数open而不是'w'. 它附加而不是覆盖文件。

千万里不及你

您正在使用w首先打开并“截断”文件的模式打开文件,正如您从内置open. 这意味着它从文件的开头而不是结尾开始写入。如果你想“追加”文本,你应该改用a。outputFile = open('output.txt', 'a')此外,您不希望每次迭代都打开和关闭文件,因为该任务可能代价高昂并且会影响性能。我建议使用with来管理文件上下文。with open('output.txt', a):     for i in top_k:             print(template.format(labels[i], results[i]), file = outputFile)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python