通常、print関数は標準出力(stdout)に文字列を出力しますが、file引数に別の出力先を指定することができます。この引数にsys.stderrを渡すと、print関数は標準エラーに文字列を出力します。sys.stderr の write メソッドを使用しても出力可能ですが、print関数と異なり自動的に改行されません。
標準エラー(stderr)への出力方法
print 関数の引数「file」に、標準エラー「sys.stderr」を渡します。 次のサンプルプログラムでは、print関数 を使用し、標準エラー に文字列を出力しています。import sys
# 標準エラー(stderr)へ出力
print('エラーが発生しました。', file=sys.stderr)
sys.stderr の write メソッドを使用すると次のようになります。print関数と異なり自動的に改行されないため、'\n' で改行を出力しています。
import sys
# 標準エラー(stderr)へ出力
sys.stderr.write('エラーが発生しました。\n')
sys.stderr とは?
sys.stderr は、標準エラー へ読み書きを行うための ファイル オブジェクト です。 例えば、テキストファイルを開いたファイルオブジェクトに対して書き込みを行うとそのファイルに内容が書き込まれます。sys.stderr ではファイルではなく、標準エラー が書き込み先になっています。標準エラー(stderr)とは?
標準エラーとは、プログラムの実行中に発生したエラーや警告などのメッセージを出力する場所です。通常、標準エラーはコンソールやターミナルなどの画面に表示されますが、リダイレクトやパイプなどで別の場所に出力することもできます。プログラムの正常な動作を標準出力、エラーを標準エラーに出力することで、出力先を分けることができます。例えば、標準出力はファイルに保存し、標準エラーは画面に表示するといったことが可能です。参考資料
検証環境
- Python 3.11.0 (main, Oct 24 2022, 18:26:48) [MSC v.1933 64 bit (AMD64)]
- Microsoft Windows 10 Enterprise Version 22H2 OS Build 19045.2604 Experience: Windows Feature Experience Pack 120.2212.4190.0
- Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
- Microsoft Windows 10 Pro Version 1809 OS Build 17763.439