OptionParser() отображает варианты, когда --help в Python

Мне нужно создать "интерфейс" для моего сценария, который (запускается crontab):

  1. Когда --help, терминал будет отображать список вариантов (хорошо отформатированный, разделенный \n)
  2. разрешить ввод нескольких вариантов (через запятую)

например (что-то вроде следующего)

python feedAnimals.py --help 
...... Choices:
           dog
           cat
           fish

python feedAnimals.py --pets dog,cat,fish

Есть ли в любом случае, чтобы сделать это с type="choices"? Или я могу использовать type="string"? Я пытался вставить \n между вариантами в параметре "помощь", но они, кажется, игнорируются во время выполнения.

Должен быть совместим с Python 2.4:(

3 ответа

Попробуйте посмотреть в документации по argparse, следует делать то, что вам нужно - и помощь (-h, --help) встроена по умолчанию

https://docs.python.org/2/library/argparse.html

Это пример того, как изменить usage значение. Попытайся:

from optparse import OptionParser 
string = "Choices:\n\tdog\n\tcat\n\tfish"
parser = OptionParser(usage=string)
(options,args) = parser.parse_args()

Вы также можете изменить свой string в этом стиле:

string = """
    Choices:
        dog
        cat
        fish
"""

Тогда проверьте это:

$python code.py --help

Это покажет вам что-то вроде этого:

Usage: 
    Choices:
        dog
        cat
        fish


Options:
  -h, --help  show this help message and exit

Посмотрите на эти связанные вопросы, первый с хорошим примером "type='choice'", а второй с несколькими значениями:

Установите выбор по умолчанию для optionparser, когда опция задана

Обрабатывать несколько значений для одной опции с помощью getopt / optparse?

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

from optparse import OptionParser

def get_args():
  usage = "Usage: %prog [options]"

  parser = OptionParser()

  parser.add_option("--pet",
    type = "choice",
    action = 'append',
    choices = ["dog", "cat", "fish"],
    default = [],
    dest = pets,
    help = "Available pets: [dog, cat, fish]"
  )

  (options, args) = parser.parse_args()

  print options, args
  return (options, args)

(opt, args) = get_args()
print opt.pets

Затем запустите:

python test.py --pet cat --pet dog --pet fish
Другие вопросы по тегам