我正在尝试将以下循环写入.txt文件(除了将输出打印到终端)。这样做我得到一个错误:
> TypeError:function takes exactly 1 argument (2 given)
我理解错误试图传达的内容,但有没有办法解决这个问题。我确实需要将标签和结果输出到.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()
我在python 2.7中工作
答案 0 :(得分:3)
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)
为避免在每次调用file
时指定print()
参数,您可以使用functools.partial
:
file_out = functools.partial(print, file=out_write)
file_out(labels[arr], results[arr])
或者是lambda!
file_out = lambda *args: print(*args, file=out_write)
file_out(labels[arr], results[arr])
为什么不编写一个同时打印和的函数?一个电话就可以做到!
out = lambda *args: print(*args) and print(*args, file=out_write)