为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

莫回无 2023-06-20 15:46:54
原始代码如下所示: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 文件。据我所知,每次循环运行时它都会替换文本,因此第一个文本将替换为第二个文本,依此类推。
查看完整描述

3 回答

?
饮歌长啸

TA贡献1951条经验 获得超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")


查看完整回答
反对 回复 2023-06-20
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

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



查看完整回答
反对 回复 2023-06-20
?
千万里不及你

TA贡献1784条经验 获得超9个赞

您正在使用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)


查看完整回答
反对 回复 2023-06-20
  • 3 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信