Python 带有argparse的参数列表

Python 带有argparse的参数列表,python,argparse,Python,Argparse,我试图通过argparse传递参数列表,但我发现的唯一方法是为我要传递的每个参数重写选项: 我目前使用的: main.py -t arg1 -a arg2 我想: main.py -t arg1 arg2 ... 这是我的密码: parser.add_argument("-t", action='append', dest='table', default=[], help="") 使用: ArgumentParser对象通常关联一个命令行 只有一个动作的争论。nargs关键字参数 将不同

我试图通过argparse传递参数列表,但我发现的唯一方法是为我要传递的每个参数重写选项:

我目前使用的:

main.py -t arg1 -a arg2
我想:

main.py -t arg1 arg2 ...
这是我的密码:

parser.add_argument("-t", action='append', dest='table', default=[], help="")
使用:

ArgumentParser对象通常关联一个命令行 只有一个动作的争论。nargs关键字参数 将不同数量的命令行参数与单个 行动

例如,如果
nargs
设置为
“+”

“*”
一样,所有存在的命令行参数都被收集到一个列表中。 此外,如果没有,将生成一条错误消息 至少存在一个命令行参数

所以,您的代码看起来像

parser.add_argument('-t', dest='table', help='', nargs='+')

这样,
-t
参数将自动收集到
列表中(您不必明确指定参数)。

注意,您要求使用argparse解决方案,我想使用package
docopt

首先安装它:

$ pip install docopt
编写代码:

"""Usage:
    main.py -a <arg>...
"""

if __name__ == "__main__":
    from docopt import docopt
    resargs = docopt(__doc__)
    print resargs
用法: main.py-a。。。 """ 如果名称=“\uuuuu main\uuuuuuuu”: 从docopt导入docopt resargs=docopt(\uuuu doc\uuuuu) 打印重标记
运行它以显示使用说明:

$ python main.py
Usage:
    main.py -a <arg>...
$python main.py
用法:
main.py-a。。。
使用您的参数调用它:

$ python main.py -a AA BB CC
{'-a': True,
 '<arg>': ['AA', 'BB', 'CC']}
$python main.py-AA BB CC
{'-a':是的,
'':['AA','BB','CC']}

顺便说一句,如果您不需要
-a
选项,您应该直接允许传递参数。它让用户使用起来更简单。

非常感谢,如果我添加了NARG,我只需要使用action='store',它就像一个charm@CondaKan
store
是默认操作,您不必显式指定它