2013-03-20 73 views
10

此問題與question asked earlier有關,但可能不相關。問題是:在使用子分析器時,如何在下面的給定(工作)示例的幫助文本中使用換行符?Python argparse:如何在subparser中插入換行符幫助文本?

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

我的輸出如下:

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 

預期輸出的幫助上file應該是:

first line 
next line 
last line 

回答

8

subparsers.add_parser()方法採用相同的ArgumentParser構造函數的參數爲​​argparse.ArgumentParser()。因此,要將RawTextHelpFormatter用於子分析器,您需要在添加子分析器時明確設置formatter_class

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

改變這一行來設置子分析器的formatter_class

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

現在,您的幫助文本將包含新行:

>>> 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 
相關問題