ターミナルで実行したPythonの結果を保存するTips
はじめに
Pythonなどをターミナルで実行すると、実行結果が画面に表示されます。この実行結果を別途ログファイルで保存したい場合があります。Pythonコードを改修することで、ログファイルに格納することもできますが、もっと簡単に実行する方法があります。今回は、ターミナルを使ってPythonの実行結果を保存する方法を紹介します。
リダイレクトを使用する
実施は簡単で、リダイレクトを使用します。Pythonの実行結果をリダイレクトでログファイルに保存します。
以下のコマンドでリダイレクトしてログファイルを保存します。
python sample_script.py > output.log
下記のPythonコードで実験してみます。
# simple_script.py
print("This is a message to stdout.")
import sys
print("This is an error message to stderr.", file=sys.stderr)
結果は以下のように得られました。
This is an error message to stderr だけが表示され、ログファイルには This is a message to stdout は表示されませんでした。
コマンドの結果
ログファイルの結果
これは標準出力はリダイレクトされるのに対して、標準エラーはリダイレクトされません。標準エラーをリダイレクトしたい場合は、次のようなコマンドを実行します。
python simple_script.py > output.log 2>&1
このコマンドを実行すると標準エラーもログファイルに保存されます。コマンドを解説すると以下のようになります。
-
2 は標準エラーのファイルディスクリプタを指します。
-
>はリダイレクトの記号です。
-
&1 は標準出力のファイルディスクリプタ(つまり1)を指す場所にリダイレクトするという意味です。
ちなみにファイルディスクリプタは、オペレーティングシステム(OS)がファイルや入出力ストリームを識別・管理するための一意の整数識別子です。一言で言えば、それは「ファイルやストリームへの"参照番号"」です。
こちらのコマンドを使用することで、ログに標準エラーを含めることもできました。
おわりに
今回紹介した手法はPythonでログを出力する方法と比較して、より簡単に実施できる方法です。Pythonの実行結果をファイルにログとして残したい場合は、ぜひこの方法を試してみてください。
この記事がいいね!と思った人はハートと、Xのフォローよろしくお願いします!
Discussion