通常,您可以连接诸如'-abbb'这样的选项,它将扩展到'-a-b-b-b'。a的计数是1,b的计数是3
然而,当混合前缀_char时,我看到了一些不同的东西。。。在
import argparse
parser = argparse.ArgumentParser( prefix_chars='-+' )
parser.add_argument( '-x', action='count', dest='counter1' )
parser.add_argument( '+x', action='count', dest='counter2' )
args = parser.parse_args( '-xxx +xxx -xxx'.split() )
print( 'counter1 = ' + str(args.counter1) )
print( 'counter2 = ' + str(args.counter2) )
运行此操作将导致:
^{pr2}$显然“+xxx”并没有扩展到“+x+x+x”,而是扩展到了“+x-x-x”。在
将前缀“字符”更改为“+-”会导致:
counter1 = 2
counter2 = 7
现在'-xxx'扩展为'-x+x+x'。在
这是明确的行为,还是我遗漏了什么?在
这是在2010年底2.7早期修补的
http://bugs.python.org/issue9352
==============
我不知道会影响这一点的bug/问题或代码更改,但我可以深入研究。在
首先,在解析过程中对单个前缀选项的字符串进行了深入的处理。在当前的
argparse.py
中,相关代码为:这是一对线:
^{pr2}$在处理重复字符时(在未解析的
explicit_arg
字符串中)保留初始-/+
。在我可以想象这样的情况:代码将
+xyz
拆分为+x
,-y
,-z
,并被更正为使用+x
,+y
,+z
。但这需要深入研究bug/问题和/或Python存储库,以确定是否以及何时进行了更改。在你现在的问题是什么?在
相关问题 更多 >
编程相关推荐