У меня есть необязательный аргумент -s для настройки инструмента. Я надеюсь, что пользователь может ввести или использовать значение по умолчанию. Если он решит использовать вариант по умолчанию, он сможет пропустить ввод дополнительных данных.
например, myScript -s
и myScript -s "Hello"
должны работать
Кажется, action = store_true
не работает с nargs = '*'
Действие магазина argparse
позволяет программисту различать 3 варианта использования:
default
)const
)Предполагая, что вы хотите, чтобы -s
и -s Hello
работали одинаково, вы можете использовать
parser = argparse.ArgumentParser(description = "Some desc.")
parser.add_argument("-s", nargs='?', const='Hello', default = None)
тогда вы можете проверить это:
>>> parser.parse_args([])
Namespace(s=None)
>>> parser.parse_args(["-s"])
Namespace(s='Hello')
>>> parser.parse_args(["-s", 'Hello'])
Namespace(s='Hello')
>>> parser.parse_args(["-s", 'foo'])
Namespace(s='foo')
@JiekeWei: чтобы определить, когда параметр вообще не передается.
Большое спасибо!
Благодарю за помощь! И еще один небольшой вопрос, для чего нужен этот «дефолт»?