有没有一种方法可以使 arparse 识别两个引号之间的任何东西作为一个参数?它似乎一直看到破折号,并假设这是一个新选项的开始
我有这样的东西:
mainparser = argparse.ArgumentParser()
subparsers = mainparser.add_subparsers(dest='subcommand')
parser = subparsers.add_parser('queue')
parser.add_argument('-env', '--extraEnvVars', type=str,
help='String of extra arguments to be passed to model.')
...other arguments added to parser...
但是当我跑步的时候:
python Application.py queue -env "-s WHATEVER -e COOL STUFF"
它给了我:
Application.py queue: error: argument -env/--extraEnvVars: expected one argument
如果我省略了第一个破折号,它完全可以正常工作,但关键是我能够传递一个包含破折号的字符串。我已经尝试了转义它,这使它成功,但添加到参数字符串有人知道如何解决这个问题吗?无论-s 在解析器中是否为参数,都会发生这种情况。
编辑: 我正在使用 Python 2.7。
编辑2:
python Application.py -env " -env"
完全没问题,但是
python Application.py -env "-env"
没有。
编辑3: 看起来这实际上是一个已经被讨论过的 bug: http://www.gossamer-threads.com/lists/python/bugs/89529,http://python.6.x6.nabble.com/issue9334-argparse-does-not-accept-options-taking-arguments-beginning-with-dash-regression-from-optp-td578790.html。只有2.7,而不是 optparse。
编辑4: 当前打开的错误报告是: http://bugs.python.org/issue9334