1. ホーム
  2. python

[解決済み] .txtファイルへの印刷出力を指示する

2022-03-07 16:18:26

質問

Pythonで印刷出力をすべてtxtファイルに保存する方法はありますか?例えば、私のコードに以下の2つの行があり、印刷出力を以下の名前のファイルに保存したいとします。 output.txt .

print ("Hello stackoverflow!")
print ("I have a question.")

が欲しい。 output.txt ファイルには

Hello stackoverflow!
I have a question.

解決方法は?

与える print a file キーワード引数で、引数の値はファイルストリームである。ファイル・ストリームを作成するには open 関数を使用します。

print("Hello stackoverflow!", file=open("output.txt", "a"))
print("I have a question.", file=open("output.txt", "a"))

から に関するPythonのドキュメント print :

file 引数はオブジェクトでなければならず write(string) メソッドが存在しない場合や None , sys.stdout が使用されます。

そして のドキュメントを参照してください。 open :

開く file を作成し、対応するファイルオブジェクトを返します。ファイルを開くことができない場合は OSError が発生する。

は、その "a" の第2引数として open は、quot;append" つまり、ファイルの既存の内容は上書きされないという意味です。つまり、既存のファイルの内容は上書きされません。 "w" .


でファイルを開くと open しかし、何度も繰り返すのはパフォーマンス的に理想的ではありません。理想的には、一度開いて名前を付けてから、その変数を print 's file オプションを使用します。あなたは その後、ファイルを閉じることを忘れないでください

f = open("output.txt", "a")
print("Hello stackoverflow!", file=f)
print("I have a question.", file=f)
f.close()

また、構文的なショートカットもあり、これは with ブロックを作成します。これは、あなたの代わりにブロックの最後でファイルを閉じてくれます。

with open("output.txt", "a") as f:
    print("Hello stackoverflow!", file=f)
    print("I have a question.", file=f)