Python 带有argparse的参数列表
我试图通过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关键字参数 将不同
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解决方案,我想使用packagedocopt
首先安装它:
$ 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@CondaKanstore
是默认操作,您不必显式指定它