Frage

I am using argparse.ArgumentParser() in my script, I would like to display the pydoc description of my script as part of the '--help' option of the argparse.

One possibly solution can be to use the formatter_class or the description attribute of ArgumentParser to configure the displaying of help. But in this case, we need to use the 'pydoc' command internally to fetch the description.

Do we have some other ways (possibly elegant) to do it?

War es hilfreich?

Lösung

You can retrieve the docstring of your script from the __doc__ global. To add it to your script's help, you can set the description argument of the parser.

"""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()

Then the help will look like:

$ 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

You can use the epilog keyword argument instead of description to move the docstring to the end of the help, instead of immediately following the usage string.

Andere Tipps

There is an elegant argparse wrapper allowing to use a Python function docstring as a command help in your command line interface: dsargparse

It does this smartly keeping only the description part of the function docstring not the arguments part that can be irrelevant to your command.

As mentioned in its Readme:

dsargparse is a wrapper of argparse library which prepares helps and descriptions from docstrings. It also sets up functions to be run for each sub command, and provides a helper function which parses args and run a selected command. Using this library, you don't need to write same texts in docstrings, help, and description.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top