プログラムを実行する際になにがしかのパラメータを受け取ることはよくあります。逆に外部から何も情報を受け取らずに処理が行われることはまれといえます。
人間とプログラムのインターフェイスを果たす物にはいくつかありますが、実行時のパラメータは最も基本的なインターフェイスとなります。
ここではpythonのプログラムを実行する際にやり取りされる実行時の引数つの受け渡しについて説明します。
pythonをコマンドラインから実行しその際に引数を受け取って処理を行おうとする場合、実行時の日キスを受け取る方法にはいくつかありますが、ここではpythonの標準ライブラリであるargparseを使った例を示します。
何はともあれサンプル
まずは、サンプルコードを示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import argparse parser = argparse.ArgumentParser() # 位置引数追加 parser.add_argument("input", help="input file name") # オプション引数追加 parser.add_argument("-o", "--output", default="out.txt", help="output file name") parser.add_argument("-p", "--param", type=int, help="parameter to program") args = parser.parse_args() if args.param == 2: print("input file name is {}. output file name is {}".format(args.input, args.output)) elif args.param == 1: print("output file name is {}".format(args.output) ) else: print("input file name is {}".format(args.input) ) |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 |
>python sample.py -h usage: sample.py [-h] [-o OUTPUT] [-p PARAM] input positional arguments: input input file name optional arguments: -h, --help show this help message and exit -o OUTPUT, --output OUTPUT output file name -p PARAM, --param PARAM parameter to program |
ここでは -h オプションをつけて実行しています。-h をつけて実行すると説明が表示されます。
このサンプルでは3つの引数をやる取りすることができます。1つずつ説明していきます。
引数について
必須引数
このサンプルでは input が該当します。
1 |
parser.add_argument("input", help="input file name") |
ソースコード上ではこのように記述しています。”input”という引数を”input file name”という解説をつけて追加するという意味になります。
このように記述すると実行時に与えられた引数を args.inputに格納します。
1 2 |
>python sample.py aaa.txt input file name is aaa.txt |
必須引数なので、指定しないとエラーになります。
オプション引数
このサンプル例では -o もしくは –output と、 -p もしくは –paramが該当します。
1 |
parser.add_argument("-o", "--output", default="out.txt", help="output file name") |
実行時のオプションとして -o もしくは –output に続いて指定したものが args.outputに格納されます。-oを指定しても、–outputを指定しても、格納先は args.outputになります。-o が省略形、 –outputがフルネームと思えばよいでしょう。定義の際に -o の方は省略できますが、 –outputの方は省略するとエラーになりますので注意が必要です。このサンプルでは実行時に-o もしくは –output をしていしない場合は defalutに指定したものが args.outputに格納されます。
1 |
parser.add_argument("-p", "--param", type=int, help="parameter to program") |
こちらの例では -pもしくは –param に続いて指定したものが args.paramに格納されます。先ほどの –outputの場合との違いは type指定があることです。これによって args.paramはint型を取ることになります。 typeの指定がない場合は文字列として格納されます。
まとめ
ここでは、プログラムと人間とのインターフェイスの1つである実行日引数について説明しました。ここで上げた例では位置引数とオプション引数、デフォルト引数、数値引数を説明しました。このほかにもバリエーションがたくさんありますが、さしあたりここで説明したものを用いればたいていのことができると思います。
より詳しい説明が必要な方は公式のドキュメントを参考になさるといいでしょう。
最後までお読みいただきありがとうございました。