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
虽然这确实有效但似乎很脆弱。有更好的方法吗?
答案 0 :(得分:0)
您可以定义自己的option-handler / -callback:
parser.add_option("-c", action="callback", callback=my_callback)
处理特殊情况或扩展语法。
查看documentation以确定这对您是否足够,然后更好(猴子)修补。