2013-03-20 5 views
10

Diese Frage bezieht sich auf eine question asked earlier, die aber möglicherweise nicht verwandt ist. Die Frage ist: Wie benutze ich Zeilenumbrüche im Hilfetext im unten stehenden (Arbeits) Beispiel, wenn ich Subparser verwende?Python argparse: Wie fügt man den Hilfstext im Subparser ein?

import argparse 

parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter) 

subparsers = parser.add_subparsers() 

parser_start = subparsers.add_parser('stop') 
parser_start.add_argument("file", help = "firstline\nnext line\nlast line") 

print parser.parse_args() 

Meine Ausgabe ist wie folgt:

tester.py stop -h 
usage: tester.py stop [-h] file 

positional arguments: 
    file  firstline next line last line 

optional arguments: 
    -h, --help show this help message and exit 

Die erwartete Ausgabe für die Hilfe auf file sollte sein:

first line 
next line 
last line 

Antwort

8

Die subparsers.add_parser() Methode nimmt die gleichen ArgumentParser Konstruktorargumente wie argparse.ArgumentParser(). Um die RawTextHelpFormatter für den Subparser zu verwenden, müssen Sie die formatter_class explizit festlegen, wenn Sie den Subparser hinzufügen.

>>> import argparse 
>>> parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter) 
>>> subparsers = parser.add_subparsers() 

Ändern Sie diese Zeile die formatter_class des subparser einzustellen:

>>> parser_start = subparsers.add_parser('stop', formatter_class=argparse.RawTextHelpFormatter) 

nun Ihre Hilfetext werden die Zeilenumbrüche enthalten:

>>> parser_start.add_argument("file", help="firstline\nnext line\nlast line") 
_StoreAction(option_strings=[], dest='file', nargs=None, const=None, default=None, type=None, choices=None, help='firstline\nnext line\nlast line', metavar=None) 

>>> print parser.parse_args(['stop', '--help']) 
usage: stop [-h] file 

positional arguments: 
    file  firstline 
       next line 
       last line 

optional arguments: 
    -h, --help show this help message and exit 
Verwandte Themen