原始代碼如下所示: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
提交
取消