入出力

【Python】sysを用いたコマンドライン引数の取得方法

【Python】sysを用いたコマンドライン引数の取得方法

Pythonでコマンドライン引数をsysモジュールを取得して処理する方法について解説します。

コマンドライン引数

コマンドライン引数とは、Pythonのプログラム実行時にコマンドラインで実行する際、引数を指定することで、プログラム実行条件を変えたりといった場合に使用する引数のことを言います。

> python test.py 引数1 引数2 ...

上記の例では「引数1」や「引数2」がコマンドライン引数です。…と書いているように列挙していくことができます。

以降では、sysモジュールを使ってPythonプログラムでコマンドライン引数を取得する最もシンプルな方法の例を紹介します。

Pythonでのコマンドライン引数取得方法

sysモジュールを利用する方法

sysモジュールを利用してコマンドライン引数を取得する簡単な例を以下に示します。

import sys


def main():
    # コマンドライン引数を取得する
    args = sys.argv
    # コマンドライン引数を表示する
    print(f'args: {args}, {type(args)}')

    # コマンドライン引数の数を調べる
    print(f'len(args): {len(args)}')

    # コマンドライン引数を順番に処理する
    for i, arg in enumerate(args):
        print(f'arg[{i}] = {arg}')


if __name__ == '__main__':
    main()
【実行例】
 >python comman_line_arguments.py arg1 arg2 arg3
args: ['comman_line_arguments.py', 'arg1', 'arg2', 'arg3'], <class 'list'>
len(args): 4
arg[0] = comman_line_arguments.py
arg[1] = arg1
arg[2] = arg2
arg[3] = arg3

コマンドライン引数は、実行時にsys.argvに設定されます。上記のプログラム名ではその値をargsという変数に代入して使用しています。

出力しているようにsys.argvはlist型で、0番目にプログラム名が入り、1番目以降にコマンドライン引数が入るので覚えておきましょう。

list型のため、上記例のようにfor文を使って順次値を取り出して処理をするということが可能です。

高度なコマンドライン引数処理 argparse

より高度にコマンドライン引数取得を実行したい場合は、argparseモジュールを使用できます。以下の記事にargparseモジュールの基本的な使い方は「argparseを用いたコマンドライン引数の取得方法」にまとめていますので参考にしてみてください。

Note

以前はoptparseというモジュールが使われていましたが、Python3.2から非推奨になりました。optparseは廃止予定でありこれ以上の開発は行われませんので、argparseモジュールの方を使用してください。

optparseの公式ドキュメントのこちらに上記の内容の記載があります。