Python3 コマンドライン引数について

Python3でコマンドライン引数を便利に使いたいと思いました。 すると公式に便利なパーサーがあるというではありませんか。(3.2以降) 16.4. argparse — コマンドラインオプション、引数、サブコマンドのパーサー — Python 3.5.1 ドキュメント とても便利。 とりあえず、引数とtypeとdefaultとhelpについてはよくわかった。他も必要になれば理解していこう。 こんな感じで使う
import argparse

# 準備
parser = argparse.ArgumentParser(description='A description for my process') # ArgumentParserオブジェクトの生成
parser.add_argument('query', help='a query') # こうすると必須になる
parser.add_argument('-a', '--aparameter', type=int, default=100, 
        help='a parameter for my process') # オプション引数になる
# パース
args = parser.parse_args()
# 結果を辞書に
params = vars(args)
# 取り出し
query = params['query']
aparameter = params['aparameter']
# 引数を使ってあれこれする
do_something(query, aparameter)
なお、
python3 FILENAME.py -h
すれば、ヘルプが表示される。-hは--helpでもいい。

sys.argvを使う手もある

そこまでしっかり引数を管理しないとか、自分で実装したいならsys.argvが楽。 引数付きで起動した時は、sys.argv[1]以降に引数の要素が入っている。
import sys
def example_arguments():
    # ファイル以外の引数部を取得する
    args = sys.argv[1:]
    print('Show arguments:'.center(40, '-'))
    print('\n'.join(args))
    print('End arguments'.center(40, '-'))
実行すると以下の出力を得られる
$ python example.py first second third fourth 5
-------------Show arguments-------------
first
second
third
fourth
5
-------------End arguments--------------
これで得られる引数は全てstrなので、必要な型が数値なら変換が必要。
タイトルとURLをコピーしました