【发布时间】:2016-03-05 05:38:25
【问题描述】:
在一个名为simulate.py 的python 脚本中,我有以下参数:
parser.add_argument('-s', '--simulators', nargs='+',
help='specify the simulators to use',
choices=['s1', 's2', 's3'])
parser_build = subparsers.add_parser('build')
parser_build.add_argument('-o3', '--optim', action='store_true')
parser_run = subparsers.add_parser('run')
parser_run.add_argument('-v', '--verbose', action='store_true')
以下命令行选项:
> ./simulate.py -s s1 s2 build
生成以下错误消息:
simulate.py: error: argument -s/--simulators: invalid choice: 'build'
如果我有另一个没有选项前缀的参数(例如 -c 示例),我应该如何指定模拟器列表?
【问题讨论】:
-
你考虑过using docopt吗?
-
我不确定,但可能你想要的是
./simulate.py -s s1 s2 -- build -
@Joost 不,从未听说过。我会看看它,如果可能的话,我更喜欢留在 argparse。
-
@AndreaCorbellini 这引发了另一个错误
simulate.py: error: argument command: invalid choice: '--' (choose from 'build', 'run') -
这是一个已知问题 - 变量
nargs标记的参数跟在位置之后。复杂的是这个位置是subparsers。