初学者でもわかる簡単な説明
sys
モジュールは、あなたのPythonプログラムが、まるで「自分がどこで、どのように動いているか」を把握し、場合によっては「どう動くか」を指示するためのものです。
例えば、
-
プログラムに何かを伝えたいとき: プログラムを実行する際に、追加の情報を渡すことができます。
-
エラーが起きたとき: どんなエラーが起きたかを知ることができます。
-
Pythonのバージョンを知りたいとき: 今使っているPythonが新しいか古いか、バージョンを知ることができます。
これらのような、プログラムの外側にある「環境」に関することを扱うのがsysモジュールです。
基本的なこと
sys
モジュールを使うには、まずimport sys
と記述して読み込む必要があります。
sys
モジュールが提供する主な機能は以下のカテゴリに分けられます。
-
コマンドライン引数へのアクセス: プログラム起動時に渡された引数を取得できます。
-
標準入出力ストリームへのアクセス: print()が出力する先や、input()が読み込む元を操作できます。
-
インタプリタ情報: Pythonのバージョン、パス、メモリ使用量などの情報を取得できます。
-
インタプリタの制御: プログラムの終了、例外ハンドリング、再帰制限の変更などを行えます。
よく使うコマンド
ここでは、sys
モジュールで特によく使われる機能をいくつかご紹介します。
-
sys.argv
:-
プログラム実行時にコマンドラインから渡された引数のリストです。
-
sys.argv[0]
はスクリプト自身のファイル名になります。
-
-
sys.exit(status)
:-
Pythonプログラムを終了させます。
-
statusは終了コードで、通常0は正常終了、0以外はエラー終了を示します。
-
-
sys.stdin
,sys.stdout
,sys.stderr
:-
それぞれ標準入力、標準出力、標準エラー出力を表すファイルライクオブジェクトです。
-
これらをリダイレクトすることで、データの入出力先を変更できます。
-
-
sys.version
:- 現在使用しているPythonインタプリタのバージョン情報を示す文字列です。
-
sys.path
:-
Pythonがモジュールを検索するパスのリストです。
-
このリストにディレクトリを追加することで、独自のモジュールをPythonが探し出せるようになります。
-
サンプルコード
以下に、上記のよく使うコマンドを使ったサンプルコードを示します。
import sys
print("--- sys.argvの例 ---")
# コマンドライン引数を表示
# 例: python your_script.py arg1 arg2
print(f"スクリプト名: {sys.argv[0]}")
if len(sys.argv) > 1:
print(f"引数: {sys.argv[1:]}")
else:
print("引数はありません。")
print("\n--- sys.versionの例 ---")
# Pythonのバージョン情報を表示
print(f"Pythonのバージョン: {sys.version}")
print("\n--- sys.pathの例 ---")
# モジュール検索パスを表示
print("モジュール検索パス:")
for p in sys.path:
print(f" {p}")
print("\n--- sys.stdout/stderr の例 ---")
# 標準出力と標準エラー出力にメッセージを出力
sys.stdout.write("これは標準出力に出力されます。\n")
sys.stderr.write("これは標準エラー出力に出力されます。\n")
print("\n--- sys.exit() の例 (コメントアウトしています) ---")
# 条件に応じてプログラムを終了させる例
# input_value = input("0 を入力するとプログラムを終了します: ")
# if input_value == '0':
# print("プログラムを終了します。")
# sys.exit(0) # 正常終了
# else:
# print("終了しませんでした。")
print("\n--- その他の便利な機能 ---")
# インタプリタの再帰制限の取得と設定
current_recursion_limit = sys.getrecursionlimit()
print(f"現在の再帰制限: {current_recursion_limit}")
# 例外情報の取得 (try-exceptブロック内で使用)
try:
1 / 0
except Exception:
exc_type, exc_obj, exc_tb = sys.exc_info()
print(f"エラーの種類: {exc_type.__name__}")
print(f"エラーメッセージ: {exc_obj}")
# tracebackモジュールと組み合わせるとより詳細な情報が得られます
# import traceback
# traceback.print_tb(exc_tb)
print("\nプログラムの実行が完了しました。")
このコードの実行方法:
上記のコードをsample_sys.py
という名前で保存します。
ターミナル(コマンドプロンプトやPowerShellなど)を開き、ファイルが保存されているディレクトリに移動します。
以下のコマンドで実行します。
引数なしで実行: python sample_sys.py
引数付きで実行: python sample_sys.py hello world 123
sys
モジュールは、Pythonプログラムをより柔軟に、そして実行環境に適応させるために非常に役立つツールです。ぜひ色々な機能を試してみてください。