问题描述
我如何使argparse解析器将所有参数视为 positional ,甚至将那些看起来像选项的参数也视为 positional ?例如,使用以下定义:
parser.add_argument('cmd',nargs='*',help='The command to run')
我希望能够跑步
prog.py mycomand --foo arg
并将['mycomand','--foo','arg']
捕获为cmd
参数。
解决方法
原来,我只需要将nargs='*'
替换为nargs=argparse.REMAINDER
。来自docs:
argparse.REMAINDER
所有其余的命令行参数都收集到一个列表中。这对于分派到其他命令行实用程序的命令行实用程序通常很有用。
这也可以,但是不太方便:
prog.py mycomand -- --foo arg