🙆

ターミナルで実行したPythonの結果を保存するTips

2024/01/27に公開

はじめに

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)がファイルや入出力ストリームを識別・管理するための一意の整数識別子です。一言で言えば、それは「ファイルやストリームへの"参照番号"」です。

https://e-words.jp/w/ファイルディスクリプタ.html#:~:text=ファイルディスクリプタとは、プログラム,られる整数値である。

こちらのコマンドを使用することで、ログに標準エラーを含めることもできました。

おわりに

今回紹介した手法はPythonでログを出力する方法と比較して、より簡単に実施できる方法です。Pythonの実行結果をファイルにログとして残したい場合は、ぜひこの方法を試してみてください。

この記事がいいね!と思った人はハートと、Xのフォローよろしくお願いします!

Discussion