Pythonでは、コマンドライン引数のパースには標準ライブラリargparse
が使われます。このライブラリはかなり高機能なので、しっかりしたアプリケーションを設計したい場面ならきっと便利に使えます。
argparseの基本
argparse
モジュールは、ユーザーフレンドリーなコマンドラインインターフェースを簡単に作成することができます。プログラムは必要な引数を定義し、argparse
はそれらをsys.argv
からパースする方法を決定します。
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers (default: find the max)')
args = parser.parse_args()
print(args.accumulate(args.integers))
上記のコードは、整数のリストを取り、合計または最大値を生成するPythonプログラムです。
kwargsとargparse
Pythonの関数でいうところの**kwargs
みたいなものが欲しくなる場面もあります。そのような場合、以下のようなコードが参考になるでしょう。
def arg(*flags, args=None, **kwargs):
import argparse
p = argparse.ArgumentParser()
p.add_argument(*flags, **kwargs)
ns, _ = p.parse_known_args(args)
return next(getattr(ns, d) for d in dir(ns) if not d.startswith('_'))
foo = arg('--foo')
bar = arg('--bar')
print('foo ==', foo)
print('bar ==', bar)
このコードでは、arg
関数を定義して、**kwargs
のようにコマンドライン引数を処理しています。
以上、Pythonのargparse
とkwargs
の活用方法について解説しました。これらをうまく活用することで、より柔軟なコマンドラインインターフェースを設計することができます。