📚

python parser リファレンス

2022/08/30に公開

TL;DR

  • parserメモ

通常のparser

parser.py
from argparse import ArgumentParser


def parse_args():
    parser = ArgumentParser(description='')
    parser.add_argument('env', # 引数名、--なしの場合は必須、ありの場合は任意
                        choices=['prd', 'stg', 'dev'], # 引数の選択肢
                        type=str, # 引数の型
                        help='')
    parser.add_argument('--date',
                        metavar='yyyy-mm-dd', # 引数の名前
                        type=str,
                        default='2000-01-01', # 引数を指定しない場合のdefault、defaultを指定しない場合はNoneが入る
                        help='')
    parser.add_argument('--commit',
                        action='store_true', # 動作
                        default=False, 
                        help='')	
    return parser.parse_args()


args = parse_args()
print(args)

サブコマンドありのparser

subcmd_parser.py
from argparse import ArgumentParser


def parse_args():
    parser = ArgumentParser(description='')
    subparsers = parser.add_subparsers()
    
    # サブコマンドの処理
    parser_print_args = subparsers.add_parser('print_args', description='') # サブコマンドとヘルプを指定
    parser_print_args.add_argument('hoge', type=str, help='hogehoge')
    parser_print_args.set_defaults(handler=print_args) # サブコマンドが呼び出す関数名を指定
    
    args = parser.parse_args()
    if hasattr(args, 'handler'):
        return args
    else:
        parser.print_help()   
        exit(1)


def print_args(args):
    print(args)

args = parse_args()
args.handler(args)

Discussion