我希望为我的命令行程序中使用的特定用法错误生成自定义错误消息,该程序使用argparse
库。我知道可以通过子类化argparse.ArgumentParser
来覆盖一般错误的呈现:
class HelpParser(argparse.ArgumentParser):
def error(self, message):
sys.stderr.write('error: %s\n' % message)
sys.exit(2)
parser = HelpParser(... ...)
args = parser.parse_args()
但是当我的error
方法被调用时,message
已经被库格式化了。例如,
> python prog.py old stuff
usage: prog [-h] {hot,cold,rain,snow} ...
prog: error: argument subparser: invalid choice: 'old' (choose from u'hot', u'cold', u'rain', u'snow')
我该如何改变“error:”后面的信息呈现方式?例如,将其改为
usage: prog [-h] {hot,cold,rain,snow} ...
error: 'old' is not a valid option. select from 'hot', 'cold', 'rain', 'snow'
?