Как я могу указать, что некоторые аргументы командной строки являются обязательными в 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") 

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

  • Как запустить ipython из оболочки, запустив «python ...»?
  • Python: ответ на подсказки командной строки
  • Как передать аргументы командной строки при использовании ideone?
  • Выполнение многострочных операторов Python в однострочной командной строке
  • Можно ли запускать python SimpleHTTPServer только на localhost?
  • Python sys.argv вне диапазона, не понимаю, почему
  • Полная командная строка, когда она была напечатана
  • Выполнение командной строки в другой папке
  • Как узнать, запущена ли программа из командной строки или из Интернета?
  • Как я могу отлаживать POST-запросы с помощью BaseHTTPServer / SimpleHTTPServer python?
  • Если операторы и сценарии одного сценария python из командной строки
  •  
    Interesting Posts for Van-Lav

    Python: гистограмма с областью, нормированной на нечто, отличное от 1

    Питоподобное «как» ключевое слово (для пространства имен) в Ruby

    matplotlib для пользователя R?

    Как декодировать JSON для str, а не unicode в Python (2.6)?

    Создайте список, используя умножение, но не каждое зеркало списка

    В python, как я могу одновременно установить несколько значений списка?

    django создает строку в таблице userprofile при создании пользователя

    Python argparse: взаимоисключающие аргументы с необязательным и позиционным аргументом

    Могу ли я использовать именованные группы в регулярном выражении Perl для получения результатов в хеше?

    Изменить перенаправление выходного процесса

    Производительность данных типов Python Numpy

    В pyqt как добавить элементы в combobox?

    urllib2.HTTPError Python

    Как использовать `numpy.savez` в цикле для сохранения нескольких массивов?

    Почему эквивалентный код Python настолько медленнее

    Python - лучший язык программирования в мире.