Python optparse帮助消息格式化

时间:2013-02-22 00:09:20

标签: python arguments command-line-arguments optparse

我使用optparse来处理命令行参数,我遇到了一个有多个空格行的问题,用于optparse帮助消息。

group.add_option(
    '-H',
    '--hostname',
    action='store',
    dest='hostname',
    help='Specify the hostname or service/hostname you want to connect to\
    If specified -f/--hostfile will be ignored',
    metavar='HOSTNAME',)

所以我在帮助消息中的“to”之后的帮助消息中得到了几个空格(因为缩进)。

 Specify the hostname or service/hostname you want to connect 
 to                   If specified -f/--hostfile will be ignored

我可以删除帮助消息第二行中的前导空格,但这将是unpythonic。

是否有一些pythonic方法可以删除帮助消息中的空格。

2 个答案:

答案 0 :(得分:3)

如果括在括号中,可以连接多行字符串。所以你可以像这样重写:

group.add_option(
    '-H',
    '--hostname',
    action='store',
    dest='hostname',
    help=('Specify the hostname or service/hostname you want to connect to.  '
          'If specified -f/--hostfile will be ignored'),
    metavar='HOSTNAME',)

答案 1 :(得分:0)

Austin Phillips的回答涵盖了你希望你的字符串连接的情况。如果你想在那里保留换行符(即你想要多行帮助字符串)。查看textwrap module。特别是,dedent功能。

使用示例:

>>> from textwrap import dedent
>>> def print_help():
...   help = """\
...   Specify the hostname or service/hostname you want to connect to
...   If specified -f/--hostfile will be ignored
...   Some more multiline text here
...   and more to demonstrate"""
...   print dedent(help)
... 
>>> print_help()
Specify the hostname or service/hostname you want to connect to
If specified -f/--hostfile will be ignored
Some more multiline text here
and more to demonstrate
>>> 

来自文档:

  

textwrap.dedent(文本)

     

从文本的每一行中删除任何常见的前导空格。

     

这可以用来使三引号字符串与显示的左边缘对齐,同时仍然以缩进的形式在源代码中显示它们。