サーチ…


前書き

sysモジュールは、 sys.argvコマンドラインパラメータやsys.exit()関数など、プログラムの実行時環境に関する関数と値にアクセスして、プログラムフローの任意のポイントから現在のプロセスを終了させます。

モジュールにきれいに分かれている間は、実際には内蔵されているので、通常の状況下では常に利用可能です。

構文

  • sysモジュールをインポートし、現在の名前空間で利用できるようにする:

    import sys
    
  • 特定の関数をsysモジュールから現在の名前空間に直接インポートする:

    from sys import exit
    

備考

すべてのsysモジュールメンバーの詳細については、 公式ドキュメントを参照してください。

コマンドラインの引数

if len(sys.argv) != 4:         # The script name needs to be accounted for as well.
    raise RuntimeError("expected 3 command line arguments")

f = open(sys.argv[1], 'rb')    # Use first command line argument.
start_line = int(sys.argv[2])  # All arguments come as strings, so need to be
end_line = int(sys.argv[3])    # converted explicitly if other types are required.

大きくて洗練されたプログラムでは、 クリックするなどのモジュールを使用してコマンドライン引数を処理するのではなく、コマンドライン引数を処理することに注意してください。

スクリプト名

# The name of the executed script is at the beginning of the argv list.
print('usage:', sys.argv[0], '<filename> <start> <end>')

# You can use it to generate the path prefix of the executed program
# (as opposed to the current module) to access files relative to that,
# which would be good for assets of a game, for instance.
program_file = sys.argv[0]

import pathlib
program_path = pathlib.Path(program_file).resolve().parent

標準エラーストリーム

# Error messages should not go to standard output, if possible.
print('ERROR: We have no cheese at all.', file=sys.stderr)

try:
    f = open('nonexistent-file.xyz', 'rb')
except OSError as e:
    print(e, file=sys.stderr)

途中でプロセスを終了し、終了コードを返す

def main():
    if len(sys.argv) != 4 or '--help' in sys.argv[1:]:
        print('usage: my_program <arg1> <arg2> <arg3>', file=sys.stderr)
        
        sys.exit(1)    # use an exit code to signal the program was unsuccessful

    process_data()


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow