optparse:在整数参数上支持额外的前缀?

时间:2014-05-30 02:26:24

标签: python optparse

optparse支持整数参数上的'0b','0'和'0x'前缀,分别表示二进制,八进制和十六进制。我需要支持一些额外的前缀,包括二进制的'%'和十六进制的'$'。

执行此操作的一种方法是修补optparse._parse_num,如下所示:

oldParseNum = optparse._parse_num
def newParseNum(val, type):
    val = re.sub('^%', '0b', val)
    val = re.sub('^\$', '0x', val)
    return oldParseNum(val, type)
optparse._parse_num = newParseNum

虽然这确实有效但似乎很脆弱。有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以定义自己的option-handler / -callback:

parser.add_option("-c", action="callback", callback=my_callback)

处理特殊情况或扩展语法。

查看documentation以确定这对您是否足够,然后更好(猴子)修补。