2013-08-07 4 views
11

Ich benutze argparse.ArgumentParser() in meinem Skript möchte ich die pydoc Beschreibung meines Skripts als Teil der Option '--help' anzeigen der Argarse.Anzeige pydocs Beschreibung als Teil von argparse '--help'

Eine eventuelle Lösung kann die formatter_class oder das description Attribut ArgumentParser zu verwenden, um die Anzeige von Hilfe zu konfigurieren. In diesem Fall müssen wir intern den Befehl 'pydoc' verwenden, um die Beschreibung abzurufen.

Haben wir andere (vielleicht elegante) Möglichkeiten, es zu tun?

+0

yaa, '__doc__' ist genug für mich. Vielen Dank ! Gibt es einen anderen Weg anstatt die 'formatter_class/description' zu benutzen? – baky

Antwort

20

Sie können den Docstring Ihres Skripts aus dem globalen Verzeichnis __doc__ abrufen. Um es der Hilfe Ihres Skripts hinzuzufügen, können Sie das Argument description des Parsers festlegen.

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

Dann wird die Hilfe wie folgt aussehen:

$ 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 

Sie die statt descriptionepilog Schlüsselwort-Argument verwenden, um die docstring bis zum Ende der Hilfe, statt unmittelbar nach der Nutzung Zeichenfolge zu bewegen.

+3

Wenn er einen mehrzeiligen Docstring hat, wird die Beschreibung ihn in eine Zeile zusammenführen. Es ist besser, 'ArgumentParser (usage = __ doc __)' –

+0

Oh, richtig. Sie müssen 'formatter_class = argparse.RawDescriptionHelpFormatter' einstellen, um die Formatierung beizubehalten. Ich fürchte, ich kopiere nur Sachen, die er schon versucht hat. – chepner