2013-08-07 8 views
11

Sto usando argparse.ArgumentParser() nel mio script, vorrei visualizzare la descrizione pydoc del mio script come parte dell'opzione '--help' dell'argparse.Mostra la descrizione di pydoc come parte di argparse '--help'

Una possibilmente soluzione può essere quella di utilizzare il formatter_class o l'attributo description di ArgumentParser per configurare la visualizzazione di aiuto. Ma in questo caso, dobbiamo usare il comando 'pydoc' internamente per recuperare la descrizione.

Abbiamo altri modi (possibilmente eleganti) per farlo?

+0

yaa, '__doc__' è abbastanza per me. Grazie ! C'è un altro modo invece di usare 'formatter_class/description'? – baky

risposta

20

È possibile recuperare la docstring del proprio script dal __doc__ globale. Per aggiungerlo alla guida dello script, è possibile impostare l'argomento description del 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() 

Poi l'aiuto sarà simile:

$ 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 

È possibile utilizzare l'argomento epilog parola chiave invece di description per spostare il docstring alla fine del aiuto, invece di subito dopo la stringa di utilizzo.

+3

Se ha una docstring su più righe, la descrizione lo unirà in una riga. È meglio usare 'ArgumentParser (usage = __ doc __)' –

+0

Oh, giusto. Dovresti impostare 'formatter_class = argparse.RawDescriptionHelpFormatter' per preservare la formattazione. Ho paura di duplicare solo cose che ha già provato, ora. – chepner

Problemi correlati