Показать описание pydoc как часть argparse '--help'

Я использую argparse.ArgumentParser() в своем скрипте, я хотел бы отобразить описание pydoc моего скрипта как часть опции '--help' argparse.

Одним из возможных решений может быть использование атрибута formatter_class или description ArgumentParser для настройки отображения справки. Но в этом случае нам нужно использовать внутреннюю команду «pydoc», чтобы получить описание.

Есть ли у нас другие способы (возможно, элегантные) сделать это?


person baky    schedule 07.08.2013    source источник
comment
дааа, __doc__ мне достаточно. Спасибо ! Есть ли другой способ вместо использования formatter_class/description ?   -  person baky    schedule 07.08.2013


Ответы (2)


Вы можете получить строку документации вашего скрипта из файла __doc__ global. Чтобы добавить его в справку вашего скрипта, вы можете установить аргумент парсера description.

"""My python script

Script to process a file
"""

p = argparse.ArgumentParser(description=__doc__,
                            formatter_class=argparse.RawDescriptionHelpFormatter)
p.add_argument('foo', help="Name of file to process")
p.parse_args()

Тогда справка будет выглядеть так:

$ python tmp.py --help
usage: tmp.py [-h] foo

My python script

Script to process a file

positional arguments:
  foo         Name of file to process

optional arguments:
  -h, --help  show this help message and exit

Вы можете использовать аргумент ключевого слова epilog вместо description, чтобы переместить строку документации в конец справки вместо того, чтобы сразу следовать за строкой использования.

person chepner    schedule 07.08.2013
comment
Если у него многострочная строка документации, описание объединит ее в одну строку. Лучше использовать ArgumentParser(usage=__doc__) - person Viktor Kerkez; 07.08.2013
comment
О верно. Вам нужно будет установить formatter_class=argparse.RawDescriptionHelpFormatter, чтобы сохранить форматирование. Боюсь, я просто повторяю то, что он уже пробовал. - person chepner; 07.08.2013

Существует элегантная оболочка argparse, позволяющая использовать строку документации функции Python в качестве справки по команде в интерфейсе командной строки: dsargparse< /а>

Он делает это разумно, сохраняя только часть описания строки документации функции, а не часть аргументов, которая может не иметь отношения к вашей команде.

Как указано в его Readme:

dsargparse — это оболочка библиотеки argparse, которая подготавливает справки и описания из строк документации. Он также устанавливает функции, которые будут выполняться для каждой подкоманды, и предоставляет вспомогательную функцию, которая анализирует аргументы и запускает выбранную команду. Используя эту библиотеку, вам не нужно писать одинаковые тексты в строках документации, справке и описании.

person Henri-Olivier Duché    schedule 18.01.2020