我正在尝试将以下循环写入.txt文件(除了将输出打印到终端)。这样做时,我会看到一条错误消息:
> TypeError:function takes exactly 1 argument (2 given)
Run Code Online (Sandbox Code Playgroud)
我了解错误试图传达的内容,但是有办法解决此问题。我确实需要标签并将结果输出到.txt文件,就像它们打印在终端上一样
这是我正在使用的代码:
out_write = open(write_to, 'wb')
for arr in top_k:
print(labels[arr], results[arr])
out_write.write(labels[arr], results[arr])
print ("\n\n\n")
out_write("\n\n\n")
out_write.close()
Run Code Online (Sandbox Code Playgroud)
我正在使用python 2.7
Python提供了许多解决此问题的方法。您可以使用多种方法将参数组合成一个字符串:
out_write.write(str(labels[arr]) + " " + str(results[arr]) + "\n")%out_write.write("%s %s\n" % (labels[arr], results[arr]))str.format()out_write.write("{} {}\n".format(labels[arr], results[arr]))out_write.write(f"{labels[arr]} {results[arr]}\n")或者您可以使用print()自己:
print(labels[arr], results[arr], file=out_write)
Run Code Online (Sandbox Code Playgroud)
为了避免file在每次调用时都需要指定参数print(),可以使用functools.partial:
file_out = functools.partial(print, file=out_write)
file_out(labels[arr], results[arr])
Run Code Online (Sandbox Code Playgroud)
还是lambda!
file_out = lambda *args: print(*args, file=out_write)
file_out(labels[arr], results[arr])
Run Code Online (Sandbox Code Playgroud)
为什么不编写同时打印和写入的函数?一个电话就全解决了!
out = lambda *args: print(*args) and print(*args, file=out_write)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
947 次 |
| 最近记录: |