OptionParser() отображает варианты, когда --help в Python
Мне нужно создать "интерфейс" для моего сценария, который (запускается crontab):
- Когда --help, терминал будет отображать список вариантов (хорошо отформатированный, разделенный \n)
- разрешить ввод нескольких вариантов (через запятую)
например (что-то вроде следующего)
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) встроена по умолчанию
Это пример того, как изменить 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