原始代码如下所示: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")
千万里不及你
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)
添加回答
举报
0/150
提交
取消