如何在列表中放入多个命令行参数的值

时间:2014-10-02 16:08:01

标签: python parsing python-3.x command-line argparse

我有一个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")

1 个答案:

答案 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}