This question is related to a question asked earlier, but might be unrelated. Question is: How to use newlines in the help text in the given (working) example below, when using subparsers?
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()
My output is as follows:
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
The expected output for the help on file
should be:
first line
next line
last line
The subparsers.add_parser()
method takes the same ArgumentParser
constructor arguments as argparse.ArgumentParser()
. So, to use the RawTextHelpFormatter
for the subparser, you need to set the formatter_class
explicitly when you add the subparser.
>>> import argparse
>>> parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter)
>>> subparsers = parser.add_subparsers()
Change this line to set the formatter_class
of the subparser:
>>> parser_start = subparsers.add_parser('stop', formatter_class=argparse.RawTextHelpFormatter)
Now, your help text will contain the newlines:
>>> 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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With