0

我正在使用 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

我可以删除帮助消息第二行中的前导空格,但那将是不合情理的。

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

4

2 回答 2

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',)
于 2013-02-22T00:17:25.570 回答
0

Austin Phillips 的回答涵盖了您希望将字符串连接起来的情况。如果您想保留换行符(即,您需要多行帮助字符串)。查看textwrap 模块。具体来说就是denden函数。

示例用法:

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

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

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

于 2013-02-22T00:28:15.863 回答