Показване на описанието на 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__. За да го добавите към помощта на вашия скрипт, можете да зададете аргумента 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, която позволява използването на docstring на функция на Python като помощ за команди във вашия интерфейс на командния ред: dsargparse

Той прави това интелигентно, като запазва само частта с описанието на документационния низ на функцията, а не частта с аргументите, която може да бъде без значение за вашата команда.

Както е споменато в неговия Readme:

dsargparse е обвивка на библиотеката argparse, която подготвя помощи и описания от документни низове. Той също така настройва функции, които да се изпълняват за всяка подкоманда, и предоставя помощна функция, която анализира аргументите и изпълнява избрана команда. Използвайки тази библиотека, не е необходимо да пишете едни и същи текстове в низове на документи, помощ и описание.

person Henri-Olivier Duché    schedule 18.01.2020