使用互斥组时的Python argparse AssertionError

使用互斥组时的Python argparse AssertionError,python,python-2.7,argparse,Python,Python 2.7,Argparse,下面是我的简单test.py脚本: import argparse parser = argparse.ArgumentParser('A long string that goes on and on and on' 'and on and on and on and on and on and on ' 'and on and on and on and on

下面是我的简单test.py脚本:

import argparse

parser = argparse.ArgumentParser('A long string that goes on and on and on'
                                 'and on and on and on and on and on and on '
                                 'and on and on and on and on and on and on '
                                 'and on and on and on and on and on and on ')
me_group = parser.add_mutually_exclusive_group()
me_group.add_argument('-f', help=argparse.SUPPRESS)
me_group.add_argument('-o', help=argparse.SUPPRESS)
parser.add_argument('-t', help='c')
parser.parse_args()
当我运行以下命令时:

python test.py --help
[-h] [-t T]
[-h]  [-t T]
我得到一个断言错误:

...
  File "/usr/lib/python2.7/argparse.py", line 332, in _format_usage
    assert ' '.join(opt_parts) == opt_usage
AssertionError
这似乎只有在我抑制相互排斥的组中的所有参数时才会发生。如果一个或多个未被抑制,则一切正常。如果我打印出比较的两面:

print ' '.join(opt_parts)
print opt_usage
我得到以下信息:

python test.py --help
[-h] [-t T]
[-h]  [-t T]

看起来那里有额外的空间。知道为什么会这样吗?是否有任何操作不正确?

在抑制args时,这是一个已知问题。只有当使用线足够长,需要包装时,才能到达。看到和

可以通过将互斥组移动到参数的末尾来避免这种情况:

import argparse
parser=argparse.ArgumentParser('一个长字符串,持续不断'
“不停地不停地不停地不停地”
“不停地不停地不停地不停地”
“不停地不停地不停地不停地不停地不停地”
parser.add_参数('-t',help='c')
me\u group=parser.add\u mutual\u exclusive\u group()
me\u group.add\u参数('-f',help=argparse.SUPPRESS)
me\u group.add\u参数('-o',help=argparse.SUPPRESS)
parser.parse_args()
结果:

python test.py-h
用法:一条长字符串,它不断地、不断地、不断地、不断地、不断地、不断地、不断地、不断地、不断地、不断地、不断地、不断地、不断地、不断地
[-h][-t]
可选参数:
-h、 --帮助显示此帮助消息并退出
-t t c

谢谢。在我的实际代码中,我有更多的参数,将被抑制的参数移到最后是可行的。