我有一个cli build.py
我称之为build.py -t -c -f
当我解析命令行参数时,是否有内置的方法来获取
['t' = true,'c'=true,'f'=true,'s'=false]
以下是定义,不确定dest
中要更改的内容([..]
的添加不起作用。只是为了展示我尝试实现的目标。
from argparse import ArgumentParser
from argparse import RawDescriptionHelpFormatter
parser = ArgumentParser(description=program_license, formatter_class=RawDescriptionHelpFormatter)
parser.add_argument("-s","--stored_proc", dest="build_what['s']", action="store_true", help="build all stored procedures, or the folder/*.sql specified")
parser.add_argument("-t","--triggers", dest="build_what['t']", action="store_true", help="build all triggers, or the folder/*.sql specified")
parser.add_argument("-f","--functions", dest="build_what['f']", action="store_true", help="build all functions, or the folder/*.sql specified")
parser.add_argument("-c","--scripts", dest="build_what['c']", action="store_true", help="run all scripts, or the folder/*.sql specified")
答案 0 :(得分:0)
参数解析器的parse_args
方法返回namespace。您可以直接访问您的值作为属性:
args = parser.parse_args()
args.stored_proc # or `args.s` if you set `dest` to `'s'`
如果您需要字典访问(无论出于何种原因),您可以使用vars
进行转换:
>>> parser.parse_args(['-s', '-f'])
Namespace(c=False, f=True, s=True, t=False)
>>> vars(_)
{'f': True, 'c': False, 't': False, 's': True}
请注意,该字典将包含所有注册的参数,而不仅仅是那四个。因此,如果您需要一个具有这四个值的字典,那么明确地创建它可能会更好:
{'f': args.f, 'c': args.c, 't': args.t, 's': args.s}