Согласно PEP 257 строкой сценария командной строки должно быть сообщение об использовании.
Строка документа сценария
отдельная программа) должна использоваться
как его сообщение об использовании, напечатанное, когда
скрипт вызывается с неверным
или пропущенные аргументы (или, возможно, с
опция "-h", для "помощи"). Такой
Документация должна документировать сценарий
синтаксис функции и командной строки,
переменные среды и файлы.
Сообщения об использовании могут быть довольно сложными
(несколько экранов заполнено) и должно быть
достаточно для нового пользователя, чтобы использовать
командовать должным образом, а также
полная быстрая ссылка на все
варианты и аргументы для
искушенный пользователь.
Итак, моя строка документации будет выглядеть примерно так:
<tool name> <copyright info>
Usage: <prog name> [options] [args]
some text explaining the usage...
Options:
-h, --help show this help message and exit
...
Теперь я хочу использовать модуль optparse. optparse генерирует разделы «Опции» и «использование», объясняющие синтаксис командной строки:
from optparse import OptionParser
if __name__ == "__main__":
parser = OptionParser()
(options, args) = parser.parse_args()
При вызове скрипта с флагом -h выводится:
Usage: script.py [options]
Options:
-h, --help show this help message and exit
Это можно изменить следующим образом:
parser = OptionParser(usage="Usage: %prog [options] [args]",
description="some text explaining the usage...")
, что приводит к
Usage: script.py [options] [args]
some text explaining the usage...
Options:
-h, --help show this help message and exit
Но как я могу использовать здесь строку документации? Передача строки документации в качестве сообщения об использовании имеет две проблемы.
- optparse добавляет «Использование:» в строку документации, если оно не начинается с «Использование:»
- Заполнитель '% prog' должен использоваться в строке документации
Результат
Судя по ответам, кажется, что нет способа повторно использовать строку документации, предназначенную для модуля optparse. Таким образом, оставшаяся опция - разобрать строку документации вручную и создать OptionParser. (Так что я приму ответ С. Лута)
Часть «Использование:» представлена IndentedHelpFormatter, который можно заменить параметром форматирования в OptionParser .__ init __ ().