Как я могу указать, что некоторые аргументы командной строки являются обязательными в Python?

Я пишу программу на Python, которая принимает аргументы командной строки. Я разбираю их с getopt (хотя мой выбор getopt является католическим браком. Я более чем готов использовать любую другую библиотеку). Есть ли способ указать, что должны быть указаны некоторые аргументы, или мне нужно вручную убедиться, что все аргументы были предоставлены?

Изменить: я изменил все экземпляры опции на аргумент в ответ на публичный протест. Пусть не будет сказано, что я не реагирую на людей, которые помогают мне 🙂

2 Solutions collect form web for “Как я могу указать, что некоторые аргументы командной строки являются обязательными в Python?”

Самый простой подход – сделать это самостоятельно. Т.е.

 found_f = False try: opts, args = getopt.getopt(sys.argv[1:], "ho:v", ["help", "output="]) except getopt.GetoptError, err: print str(err) usage() sys.exit(2) for o, a in opts: if o == '-f': process_f() found_f = True elif ... if not found_f: print "-f was not given" usage() sys.exit(2) 

Что касается меня, я предпочитаю использовать модуль optparse , он достаточно мощный, поскольку exapmle может автоматически генерировать сообщение -h по заданным параметрам:

 from optparse import OptionParser parser = OptionParser() parser.add_option("-f", "--file", dest="filename", help="write report to FILE", metavar="FILE") parser.add_option("-q", "--quiet", action="store_false", dest="verbose", default=True, help="don't print status messages to stdout") (options, args) = parser.parse_args() 

Вы должны вручную проверить, были ли предоставлены все аргументы:

 if len(args) != 1: parser.error("incorrect number of arguments") 

Предоставление вариантов обязательным для меня кажется довольно странным – они называются вариантами, не имеющими никакого смысла …

  • Python: запустить функцию из командной строки
  • Как преобразовать аргументы командной строки в python в словарь?
  • Bash или GoogleCL: новая строка в строковом параметре
  • Пауза в Python
  • Изменить интерактивную подсказку Python «>>>»
  • проверка JSON из командной строки с использованием `python -m jsontool` дает« Нет объекта JSON, который может быть декодирован »
  • Выполнение командной строки в другой папке
  • Как просмотреть фактическую команду, выполняемую «subprocess.check_call ()»
  • Python - лучший язык программирования в мире.