【问题标题】:optparse: Support additional prefixes on integer arguments?optparse:支持整数参数的附加前缀?
【发布时间】: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

标签: python optparse


【解决方案1】:

您可以定义自己的选项处理程序/回调:

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

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

查看documentation 以确定这是否足以满足您的需求,并且比(猴子-)修补更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 2021-09-26
    • 2013-03-12
    相关资源
    最近更新 更多