Argparse добавить строку параметров - PullRequest
0 голосов
/ 13 декабря 2018

Этот вопрос в какой-то момент будет странным ...

Я пытаюсь добавить строки параметров в анализаторе после добавления одного аргумента.

Например

import argparse
p = argparse.ArgumentParser()
p.add_argument(dest = 'myvar')
p._actions[1].option_strings = ['-foo']
p.parse_args('-foo 1')

Этот пример не работает, он говорит:

: error: the following arguments are required: -foo

Даже если я даю аргумент ...

Кто-нибудь знает, почему это происходит?

Есть ли способ добавить строки параметров после метода add_argument?

1 Ответ

0 голосов
/ 13 декабря 2018

Посмотрев исходный код argparse , я обнаружил, что вам также нужно зарегистрировать действие по строке параметров, которая имеет:

import argparse

p = argparse.ArgumentParser()
p.add_argument(dest = 'myvar')
p._actions[1].option_strings = ['-foo']

# You also need to do this
p._option_string_actions['-foo'] = p._actions[1]

args = p.parse_args(['-foo', '100'])
print('myvar is', args.myvar)  # myvar is 1

Обратите внимание на изменение при вызове parse_args.

Надеюсь, это поможет !!

...