python 中的多行 argparse 帮助显示
Multiple lines in python argparse help display
我正在使用 argparse in Python2.7,我想在参数的帮助文本中显示多行。
我的代码是这样的:
import argparse
parser = argparse.ArgumentParser(description='details',
usage='use "%(prog)s --help" for more information')
parser.add_argument('--argument', default=None, type=sometype,
help='''
First line \n
Second line \n
\n
More lines \n
''')
我想在调用 --help 时打印多行帮助信息。但是,输出如下所示。
First line Second line More lines
我知道我可以通过将每一行的字符串相加来解决问题。
parser.add_argument('--argument', default=None, type=sometype,
help='First line \n' +
'Second line \n' +
'\n' +
'More lines')
但是有几十行我想添加到帮助文本中。我想知道是否有一种方便的方法可以将帮助文本分成多行?
另外,帮助信息中一行显示的字符数似乎有上限,在我的例子中是 54 个。这个限制是否依赖于系统,有没有办法增加上限?
您可以做的最简单的事情是将行放在一个数组中,然后像这样用换行符连接它们:
help_lines = ['First line', 'Second line', '', 'More lines']
# ...
parser.add_argument('--argument', default=None, type=sometype,
help='\n'.join(help_lines))
默认帮助格式化程序重新换行以适合您的终端(它查看 COLUMNS
环境变量以确定输出宽度,默认为总共 80 个字符)。
By default, ArgumentParser
objects line-wrap the description and epilog texts in command-line help messages.
使用 RawTextHelpFormatter
class 表示您已经换行:
RawTextHelpFormatter maintains whitespace for all sorts of help text, including argument descriptions.
您的代码如下所示:
parser = argparse.ArgumentParser(description='details',
usage='use "%(prog)s --help" for more information',
formatter_class=argparse.RawTextHelpFormatter)
请注意不要添加太多换行符;三引号字符串 包括您留在字符串中的换行符 。因此,您不需要 \n
个字符:
>>> import argparse
>>> parser = argparse.ArgumentParser(description='details',
... usage='use "%(prog)s --help" for more information',
... formatter_class=argparse.RawTextHelpFormatter)
>>> parser.add_argument('--argument', default=None,
... help='''
... First line
... Second line
...
... More lines
... ''')
_StoreAction(option_strings=['--argument'], dest='argument', nargs=None, const=None, default=None, type=None, choices=None, help='\n First line\n Second line\n\n More lines\n ', metavar=None)
>>> parser.print_help()
usage: use " --help" for more information
details
optional arguments:
-h, --help show this help message and exit
--argument ARGUMENT
First line
Second line
More lines
另一个简单的方法是包含 textwrap.
例如,
import argparse, textwrap
parser = argparse.ArgumentParser(description='Prepare input file',
usage='use "python %(prog)s --help" for more information',
formatter_class=argparse.RawTextHelpFormatter)
parser.add_argument('--argument', default=somedefault, type=sometype,
help= textwrap.dedent('''\
First line
Second line
More lines ...
'''))
这样就可以避免每行输出前长空space。
usage: use "python your_python_program.py --help" for more information
Prepare input file
optional arguments:
-h, --help show this help message and exit
--argument ARGUMENT
First line
Second line
More lines ...
我正在使用 argparse in Python2.7,我想在参数的帮助文本中显示多行。
我的代码是这样的:
import argparse
parser = argparse.ArgumentParser(description='details',
usage='use "%(prog)s --help" for more information')
parser.add_argument('--argument', default=None, type=sometype,
help='''
First line \n
Second line \n
\n
More lines \n
''')
我想在调用 --help 时打印多行帮助信息。但是,输出如下所示。
First line Second line More lines
我知道我可以通过将每一行的字符串相加来解决问题。
parser.add_argument('--argument', default=None, type=sometype,
help='First line \n' +
'Second line \n' +
'\n' +
'More lines')
但是有几十行我想添加到帮助文本中。我想知道是否有一种方便的方法可以将帮助文本分成多行?
另外,帮助信息中一行显示的字符数似乎有上限,在我的例子中是 54 个。这个限制是否依赖于系统,有没有办法增加上限?
您可以做的最简单的事情是将行放在一个数组中,然后像这样用换行符连接它们:
help_lines = ['First line', 'Second line', '', 'More lines']
# ...
parser.add_argument('--argument', default=None, type=sometype,
help='\n'.join(help_lines))
默认帮助格式化程序重新换行以适合您的终端(它查看 COLUMNS
环境变量以确定输出宽度,默认为总共 80 个字符)。
By default,
ArgumentParser
objects line-wrap the description and epilog texts in command-line help messages.
使用 RawTextHelpFormatter
class 表示您已经换行:
RawTextHelpFormatter maintains whitespace for all sorts of help text, including argument descriptions.
您的代码如下所示:
parser = argparse.ArgumentParser(description='details',
usage='use "%(prog)s --help" for more information',
formatter_class=argparse.RawTextHelpFormatter)
请注意不要添加太多换行符;三引号字符串 包括您留在字符串中的换行符 。因此,您不需要 \n
个字符:
>>> import argparse
>>> parser = argparse.ArgumentParser(description='details',
... usage='use "%(prog)s --help" for more information',
... formatter_class=argparse.RawTextHelpFormatter)
>>> parser.add_argument('--argument', default=None,
... help='''
... First line
... Second line
...
... More lines
... ''')
_StoreAction(option_strings=['--argument'], dest='argument', nargs=None, const=None, default=None, type=None, choices=None, help='\n First line\n Second line\n\n More lines\n ', metavar=None)
>>> parser.print_help()
usage: use " --help" for more information
details
optional arguments:
-h, --help show this help message and exit
--argument ARGUMENT
First line
Second line
More lines
另一个简单的方法是包含 textwrap.
例如,
import argparse, textwrap
parser = argparse.ArgumentParser(description='Prepare input file',
usage='use "python %(prog)s --help" for more information',
formatter_class=argparse.RawTextHelpFormatter)
parser.add_argument('--argument', default=somedefault, type=sometype,
help= textwrap.dedent('''\
First line
Second line
More lines ...
'''))
这样就可以避免每行输出前长空space。
usage: use "python your_python_program.py --help" for more information
Prepare input file
optional arguments:
-h, --help show this help message and exit
--argument ARGUMENT
First line
Second line
More lines ...