【发布时间】:2014-05-30 02:26:23
【问题描述】:
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
虽然这确实有效,但它似乎很脆弱。有更好的方法吗?
【问题讨论】:
-
你需要使用optparse吗? argparse 较新,并且具有可扩展的类型系统:docs.python.org/2/library/argparse.html#type
-
@anon:代码已经使用了 optparse,如果可能的话,我宁愿让它大部分保持不变。但是,optparse 似乎也有一个记录在案的方法 add new types。