Day 149argparseでサブコマンド付きCLIを作る
Pythonコード
1import argparse2 3parser = argparse.ArgumentParser(description='サブコマンド付きCLIの例')4subparsers = parser.add_subparsers(dest='command')5 6add_parser = subparsers.add_parser('add', help='2つの数値を足す')7add_parser.add_argument('num1', type=int, help='最初の数値')8add_parser.add_argument('num2', type=int, help='2番目の数値')9 10list_parser = subparsers.add_parser('list', help='リストの要素を表示')11list_parser.add_argument('elements', type=str, nargs='+', help='リストの要素')12 13args = parser.parse_args()14 15if args.command == 'add':16 result = args.num1 + args.num217 print(f'{args.num1} + {args.num2} = {result}')18elif args.command == 'list':19 print('リストの要素:')20 for element in args.elements:21 print(element)
解説
- 行1: argparseモジュールをインポートします。argparseは、コマンドラインインターフェイスを作成するための組み込みモジュールです。
- 行2〜3: ArgumentParserオブジェクトを作成します。description引数でコマンドラインインターフェイスの説明を設定します。
- 行4: サブコマンドを追加します。add_subparsersメソッドでサブコマンドを定義し、dest引数でサブコマンドの名前を設定します。
- 行6〜7: 'add'サブコマンドを定義します。add_parser.add_argumentメソッドで数値を2つ受け取ります。type引数で数値の型をintに設定します。
- 行10〜11: 'list'サブコマンドを定義します。list_parser.add_argumentメソッドでリストの要素を複数受け取ります。nargs='+'引数で複数の引数を受け取ることができます。
- 行13: コマンドライン引数を解析します。parse_argsメソッドでコマンドライン引数を解析し、argsオブジェクトに格納します。
- 行15〜17: 'add'サブコマンドの場合、2つの数値を足し算して結果を表示します。print()関数は、画面に文字や値を表示する関数です。
- 行19〜21: 'list'サブコマンドの場合、リストの要素を表示します。forループでリストの要素を繰り返し、print()関数で表示します。
次に試してみよう
- サブコマンドを追加して、コマンドラインインターフェイスの機能を拡張してみましょう。
- コマンドライン引数の型を変更して、さまざまなデータ型を扱えるようにしてみましょう。
- コマンドラインインターフェイスの説明やヘルプメッセージをカスタマイズしてみましょう。