[python] ファイルに直接printする
print関数の出力先を標準エラー出力やファイルなど、いろんな場所に切り替える小ネタの紹介
print関数
皆さんご存知のprint関数でございます。print(~~)
ってすると画面に文字が出るアレです。
print("Hello world!")
# Hello world!
ファイルに直接printする
print関数は実はファイルに直接printすることもできるんです。
with open("hello.txt", "w") as f:
print("hello world", file=f)
print関数でfile=~~
を指定することで出力先を切り替えることができます。
上の例ではopenで開いたファイルに出力するように指定しています。
こうすると画面に文字は出ませんが代わりにファイルに直接printの内容が書き込まれます。
標準エラー出力にprintする
print関数は特に指定しなければ標準出力に文字が書き込まれるので、次は標準エラー出力に書き込まれるように変えてみます。
import sys
print("Hello world!", file=sys.stderr)
実行してみると同じように画面に文字が出ると思いますが、出力先が標準出力ではなく標準エラー出力になっています。
def eprint(*args, **kwargs)
return print(*args, file=sys.stderr, **kwargs)
可変長引数を用いて上記のようにすることで標準エラー出力にprint
する関数を作ることもできます。
ファイルライクオブジェクトにprintする
StringIO
などのファイルライクオブジェクトにもファイル同様print
することができます。
from io import StringIO
sio = StringIO()
print("Hello world!", file=sio)
まとめ
print
関数のキーワード引数file
に出力先を指定するといろんなところに文字が出力できる。