Есть ли способ заставить argparse распознавать что-либо между двумя кавычками как один аргумент? Кажется, что он продолжает видеть тире и полагает, что это начало новой опции
У меня есть что-то вроде:
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
Если я отойду от первого тире, он будет работать отлично, но это очень важно, чтобы я мог передать строку с тире в ней. Я попытался убежать от него с \, что приводит к его успеху, но добавляет строку\в строку аргументов. Кто-нибудь знает, как обойти это? Это происходит независимо от того, является или нет аргументом ss в парсере.
EDIT: я использую Python 2.7.
EDIT2:
python Application.py -env " -env"
работает отлично, но
python Application.py -env "-env"
нет.
EDIT3: Похоже, это на самом деле ошибка, которая уже обсуждалась: 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.
EDIT4: Текущий отчет об ошибке: http://bugs.python.org/issue9334