Python:起動時引数の取得方法
コンソールで実行する場合など、Pythonでも起動時の引数を拾いたい場合がある。
その場合、argparseを使うと便利なのだが、理解するのがなかなか大変だった。そこで、ある程度理解した状態の、サンプルプログラムを掲載しておく。
#!python3 import argparse parser = argparse.ArgumentParser() # 必ず必要な引数 parser.add_argument("value", type=int, help="必ず入れなきゃならない数値") # 必ずしも必要ではない引数(省略すると999999になる) parser.add_argument("-hd", "--hasdefault", type=int, default=999999, help="デフォルト値のある数値オプション") # デフォルト値のない引数 parser.add_argument("-nd", "--nodefault", type=int, help="デフォルト値のない数値のオプション") # 値が限定された引数 parser.add_argument("-sv", "--selectvalue", type=int, choices=["1", "3", "10"], help="1,3,10しか許されないオプション") # 副パラメーターの付かないオプション store_trueは、引数があった場合、args.sayhello=true となる parser.add_argument("-s", "--sayhello", action="store_true", help="helloと言います") # 副パラメーターの付かないオプション store_trueは、引数があった場合、args.sayhello=true となる parser.add_argument("-ds", "--dontsayhello", action="store_false", help="helloと言いません") # 引数を判定 args = parser.parse_args() # 引数に応じた動作 print("-hdオプションの値 : "+str(args.hasdefault)) print("-ndオプションの値 : "+str(args.nodefault)) if args.sayhello: print("say hello!") if not args.dontsayhello: print("okay, don't say hello!") print("input number is "+str(args.value))
実行結果はこんな感じになる。
$ python3 getargs.py --help
usage: getargs.py [-h] [-hd HASDEFAULT] [-nd NODEFAULT] [-sv {1,3,10}] [-s]
[-ds]
value
positional arguments:
value 必ず入れなきゃならない数値
optional arguments:
-h, --help show this help message and exit
-hd HASDEFAULT, --hasdefault HASDEFAULT
デフォルト値のある数値オプション
-nd NODEFAULT, --nodefault NODEFAULT
デフォルト値のない数値のオプション
-sv {1,3,10}, --selectvalue {1,3,10}
1,3,10しか許されないオプション
-s, --sayhello helloと言います
-ds, --dontsayhello helloと言いません
$ python3 getargs.py
usage: getargs.py [-h] [-hd HASDEFAULT] [-nd NODEFAULT] [-sv {1,3,10}] [-s]
[-ds]
value
getargs.py: error: the following arguments are required: value
$ python3 getargs.py 3
-hdオプションの値 : 999999
-ndオプションの値 : None
input number is 3
python3 getargs.py a
usage: getargs.py [-h] [-hd HASDEFAULT] [-nd NODEFAULT] [-sv {1,3,10}] [-s]
[-ds]
value
getargs.py: error: argument value: invalid int value: 'a'
# 主引数は整数しか受け付けない宣言をしているためエラー
python3 getargs.py -s 3
-hdオプションの値 : 999999
-ndオプションの値 : None
say hello!
input number is 3
#-sオプションをつけると、"say hello!"と出力する
python3 getargs.py -ds 3
-hdオプションの値 : 999999
-ndオプションの値 : None
okay, don't say hello!
input number is 3
-
前の記事
python:クラス生成で変数を初期化する場合にハマったこと 2020.06.09
-
次の記事
Ubuntu20.04にDockerをインストールする手順 2020.06.16