Python optparse, как включать дополнительную информацию в вывод использования?

Для Забавы я должен был искать блок Motorolla HC11:

              org           $100
Loop    nop
          jsr            Loop
26
задан BradleyDotNET 16 September 2014 в 21:35
поделиться

4 ответа

parser = optparse.OptionParser(epilog="otherstuff")

По умолчанию format_epilog удаляет символы новой строки (использует перенос текста), поэтому вам нужно переопределить format_epilog в вашем синтаксическом анализаторе следующим образом.

def main():

    class MyParser(optparse.OptionParser):
        def format_epilog(self, formatter):
            return self.epilog

    parser =MyParser(epilog=
"""Examples:

check_dell -c all
check_dell -c fans memory voltage
check_dell -s
""")
...

Вот немного подробностей.
Если вы посмотрите optparse.py , в классе OptionParser есть метод с именем format_epilog , который вызывается format_help

, вот фрагмент from optparse.py

def format_epilog(self, formatter):
    return formatter.format_epilog(self.epilog)

def format_help(self, formatter=None):
    if formatter is None:
        formatter = self.formatter
    result = []
    if self.usage:
        result.append(self.get_usage() + "\n")
    if self.description:
        result.append(self.format_description(formatter) + "\n")
    result.append(self.format_option_help(formatter))
    result.append(self.format_epilog(formatter))
    return "".join(result)

По умолчанию formatter.format_epilog использует textwrap.fill , который, помимо прочего, удаляет символы новой строки из эпилога. Поскольку мы хотим сохранить символы новой строки, мы создаем подкласс OptionParser и меняем поведение format_epilog

42
ответ дан 28 November 2019 в 06:35
поделиться

Используйте параметр Использование :

usage = "usage: %prog [options] arg1 arg2"
parser = OptionParser(usage=usage)

Вы можете добавить больше через (просто пример):

group = OptionGroup(parser, "Dangerous Options",
                    "Caution: use these options at your own risk.  "
                    "It is believed that some of them bite.")
group.add_option("-g", action="store_true", help="Group option.")
parser.add_option_group(group)

Пример вывода:

использование: [параметры] arg1 arg2

параметры: -h, --help показать это справочное сообщение и выйти из
-v, --verbose сделать много шума [по умолчанию]
-q, --quiet be vewwy quiet (я охотюсь на болванов)
-fFILE, --file = ФАЙЛ записать вывод в ФАЙЛ
-mMODE, --mode = MODE режим взаимодействия: один из «новичок», «средний уровень», [по умолчанию], «эксперт»

Опасные параметры: Внимание: использование эти варианты на ваш страх и риск. Это Считается, что некоторые из них кусаются. -g Параметр группы.

Посмотрите здесь .

5
ответ дан 28 November 2019 в 06:35
поделиться

Есть параметр description , который вы можете передать конструктору OptionParser . Это позволяет вам включать произвольный текст, который появляется после использования , но перед списком опций.

См. 16.4.3.1. Создание парсера .

2
ответ дан 28 November 2019 в 06:35
поделиться

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

from optparse import OptionParser

parser = OptionParser(add_help_option=False, 
                      epilog="This can't be easily\n multilined")
parser.add_option('-h', '--help', dest='help', action='store_true',
                  help='show this help message and exit')

(options, args) = parser.parse_args()

if options.help:
    parser.print_help()
    print 'now we have an epilog'
    print 'with as many lines as you wish'
    sys.exit()

Это в основном то, что синтаксический анализатор делает с поведение по умолчанию add_help_option = True , за исключением, конечно, print s.

Но, честно говоря, я бы также предпочел способ просто добавить любое заданное количество строк описания в начале и в конце.

4
ответ дан 28 November 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: