Python argparse: "непризнанные аргументы"

Я пытаюсь использовать свою программу с опцией командной строки. Вот мой код:

import argparse def main(): parser = argparse.ArgumentParser() parser.add_argument("-u","--upgrade", help="fully automatized upgrade") args = parser.parse_args() if args.upgrade: print "Starting with upgrade procedure" main() 

Когда я пытаюсь запустить свою программу с терминала ( python script.py -u ), я ожидаю получить сообщение Starting with upgrade procedure , но вместо этого получаю сообщение об ошибке unrecognized arguments -u .

Ошибка, которую вы получаете, заключается в том, что -u ожидает некоторое значение после нее. Если вы используете python script.py -h вы найдете его в инструкции использования, говорящей [-u UPGRADE] .

Если вы хотите использовать его как boolean или flag (true, если используется -u ), добавьте дополнительное action параметра:

 parser.add_argument("-u","--upgrade", help="fully automatized upgrade", action="store_true") 

action – Основной тип действия, которое необходимо предпринять, когда этот аргумент встречается в командной строке

При action="store_true" , если указан параметр -u , значение true присваивается args.upgrade . Не указывая на это, подразумевается False.

Источник: документация Python argparse

В настоящее время ваш аргумент требует, чтобы для него было передано значение.

Если вы хотите -u как вариант вместо этого, используйте action='store_true' для аргументов, которые не нуждаются в значении.

Пример –

 parser.add_argument("-u","--upgrade", help="fully automatized upgrade", action='store_true') 

Для булевых аргументов используйте action = "store_true":

 parser.add_argument("-u","--upgrade", help="fully automatized upgrade", action="store_true") 

См .: https://docs.python.org/2/howto/argparse.html#introducing-optional-arguments