Согласно PEP 257 строка документации командной строки script должно быть его сообщением об использовании.
Строка документации скрипта (автономной программы) должна быть пригодна для использования в качестве сообщения об использовании, которое выводится при вызове скрипта с неправильными или отсутствующими аргументами (или, возможно, с опцией "-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__().