Python sys モジュール
sysは Python 標準ライブラリのモジュールで、Python インタープリタおよびその環境と対話する機能を提供します。
を通じてsysライブラリを使用すると、Python インタープリタに関連する変数や関数(コマンドライン引数、標準入出力、プログラムの終了など)にアクセスできます。
sys ライブラリのインポート
使用する場合sysライブラリの前に、まずそれをインポートする必要があります。インポート方法は次のとおりです。
import sys
例
import sys
# os モジュールのすべての属性とメソッドを一覧表示
print(dir(os))
# os モジュールのすべての属性とメソッドを一覧表示
print(dir(os))
sys ライブラリの一般的な機能
1. コマンドライン引数
sys.argvはコマンドライン引数を含むリストです。sys.argv[0]はスクリプト名で、後続の要素はスクリプトに渡される引数です。
サンプルコード:
例
import sys
print("スクリプト名:", sys.argv[0])
print("引数リスト:", sys.argv[1:])
print("スクリプト名:", sys.argv[0])
print("引数リスト:", sys.argv[1:])
実行方法:
python script.py arg1 arg2
出力結果:
脚本名称: script.py 参数列表: ['arg1', 'arg2']
2. プログラムの終了
sys.exit()プログラムを終了するために使用します。終了ステータスコードとして整数を渡すことができます。通常、00 は成功を表し、0以外の値はエラーを表します。
サンプルコード:
例
import sys
print("プログラム開始")
sys.exit(0)
print("このコード行は実行されません")
print("プログラム開始")
sys.exit(0)
print("このコード行は実行されません")
3. 標準入出力
sys.stdin、sys.stdoutとsys.stderrはそれぞれ標準入力、標準出力、標準エラーストリームを表します。これらのストリームをリダイレクトして、カスタムの入出力動作を実現できます。
サンプルコード:
例
import sys
# 標準出力をファイルにリダイレクト
with open('output.txt', 'w') as f:
sys.stdout = f
print("この行の内容は output.txt に書き込まれます")
# 標準出力を復元
sys.stdout = sys.__stdout__
print("この行の内容はコンソールに表示されます")
# 標準出力をファイルにリダイレクト
with open('output.txt', 'w') as f:
sys.stdout = f
print("この行の内容は output.txt に書き込まれます")
# 標準出力を復元
sys.stdout = sys.__stdout__
print("この行の内容はコンソールに表示されます")
4. Python バージョン情報
sys.versionとsys.version_info現在の Python インタープリタのバージョン情報を提供します。
サンプルコード:
例
import sys
print("Python バージョン:", sys.version)
print("バージョン情報:", sys.version_info)
print("Python バージョン:", sys.version)
print("バージョン情報:", sys.version_info)
出力結果:
<code>Python 版本: 3.9.7 (default, Aug 31 2021, 13:28:12) [GCC 7.5.0] 版本信息: sys.version_info(major=3, minor=9, micro=7, releaselevel='final', serial=0) </code>
5. モジュール検索パス
sys.pathは、Python インタープリタがモジュールをインポートするときに検索するパスを含むリストです。このリストを変更して、カスタムのモジュール検索パスを追加できます。
サンプルコード:
例
import sys
print("モジュール検索パス:", sys.path)
sys.path.append('/custom/path')
print("更新後のモジュール検索パス:", sys.path)
print("モジュール検索パス:", sys.path)
sys.path.append('/custom/path')
print("更新後のモジュール検索パス:", sys.path)
sys モジュールの一般的な属性
| 属性 | 説明 |
|---|---|
sys.argv | コマンドライン引数のリスト。sys.argv[0]はスクリプト名です。 |
sys.path | Python モジュール検索パス(PYTHONPATH) |
sys.modules | 読み込み済みモジュールの辞書 |
sys.platform | オペレーティングシステムのプラットフォーム識別子(例:'win32', 'linux', 'darwin') |
sys.version | Python インタープリタのバージョン情報 |
sys.executable | Python インタープリタの絶対パス |
sys.stdin | 標準入力ストリーム(ファイルオブジェクト) |
sys.stdout | 標準出力ストリーム(ファイルオブジェクト) |
sys.stderr | 標準エラーストリーム(ファイルオブジェクト) |
sys.byteorder | バイトオーダー('little' 或 'big') |
sys.maxsize | 最大整数値(2**31-1 或 2**63-1) |
sys モジュールの一般的なメソッド
| メソッド | 説明 |
|---|---|
sys.exit([status]) | プログラムを終了し、status=00 は正常終了を表します |
sys.getsizeof(obj) | オブジェクトが占有するメモリのバイト数を返します |
sys.getdefaultencoding() | デフォルトの文字列エンコーディングを取得します(通常は'utf-8') |
sys.setrecursionlimit(limit) | 再帰の深さの制限を設定します(デフォルトは1000) |
sys.getrecursionlimit() | 現在の再帰の深さの制限を取得します |
sys.getrefcount(obj) | オブジェクトの参照カウントを返します |
sys.exc_info() | 現在の例外情報を取得します((type, value, traceback)) |
sys.settrace(tracefunc) | デバッグトレース関数を設定します |
sys.setprofile(profilefunc) | パフォーマンスプロファイリング関数を設定します |