次のループを.txtファイルに書き込もうとしています(出力を端末に出力するだけでなく)。複数の引数を持つ.write関数を使用してtxtファイルに書き込む - Python
> TypeError:function takes exactly 1 argument (2 given)
を私はエラーが伝えるしようとしているのか理解が、これを回避する方法がある。そうすることで、私はというエラーを取得します。私のpython 2.7
次のループを.txtファイルに書き込もうとしています(出力を端末に出力するだけでなく)。複数の引数を持つ.write関数を使用してtxtファイルに書き込む - Python
> TypeError:function takes exactly 1 argument (2 given)
を私はエラーが伝えるしようとしているのか理解が、これを回避する方法がある。そうすることで、私はというエラーを取得します。私のpython 2.7
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()
を:私は、私が使用していたコードである彼らはここで、端末
に印刷されているだけのよう.txtファイルにラベルと結果の出力が必要なのか
Pythonはこの問題に対する多くの解決策を提供しています。あなたはいくつかの方法を使用して単一の文字列を作るためにあなたの引数を組み合わせることができます。
%
out_write.write("%s %s\n" % (labels[arr], results[arr]))
str.format()
out_write.write("{} {}\n".format(labels[arr], results[arr]))
out_write.write(str(labels[arr]) + " " + str(results[arr]) + "\n")
out_write.write(f"{labels[arr]} {results[arr]}\n")
それとも、print()
自体使用することができます。print()
へのすべての呼び出しでfile
パラメータを指定する必要がないようにするには
print(labels[arr], results[arr], file=out_write)
を、あなたはfunctools.partial
使用することができます。
file_out = functools.partial(print, file=out_write)
file_out(labels[arr], results[arr])
かラムダ!
file_out = lambda *args: print(*args, file=out_write)
file_out(labels[arr], results[arr])
なぜを印刷し、が同時に書き込みを行う関数を記述していませんか? 1回の呼び出しですべてのことができます!
out = lambda *args: print(*args) and print(*args, file=out_write)
ありがとう! str.format()のアドバイスを受け取りましたが、同じ行にテキストを出力します。私はそれが "ラベル結果"コンボを印刷した後に新しい行に入るために非常に基本的な何かを失っていると確信しています。ありがとう! – Veejay
申し訳ありませんが、改行を書式文字列に入れるのを忘れてしまいました。私はちょうどそれらを追加する私の答えを編集しました.. – kindall
パーフェクト!それがそれでした。もう1つ、私は複数のファイルにこのループを実行しているので、本質的にforループは複数回実行されますが、私のコードはforループに出力を1回だけ(テキストファイル上に)印刷し、ループしているので、私のディレクトリにファイルがあるので、ループしています。これがout.txtに反映されていない理由は何でしょうか?ありがとう:) – Veejay
'out_write.write' –
単一の文字列(あなたがそれをしたいしかし作る( '{} {}' 形式(ラベル[ARR]結果[ARR])が。):連結、 '%を' 、 '.format()'、f-strings) '.write()'への2つの呼び出しを使用してください – kindall