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

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

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

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

Ответ 1

Вы можете получить docstring вашего скрипта из __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 ключевого слова epilog вместо description чтобы переместить docstring в конец справки, а не сразу после строки использования.