【发布时间】:2017-01-07 00:21:00
【问题描述】:
我想手动处理parse_args() 在参数未知值的情况下引发错误的情况。例如:
如果我有以下名为script.py的python文件:
argp = argparse.ArgumentParser(description='example')
argp.add_argument('--compiler', choices=['default', 'clang3.4', 'clang3.5'])
args = argp.parse_args()
我使用以下参数运行脚本python script.py --compiler=foo 它会引发以下错误:
error: argument --compiler: invalid choice: 'foo' (choose from 'default', 'clang3.4', 'clang3.5')
SystemExit: 2
我需要做什么才能自己处理这种行为而不是脚本自行退出?一个想法是继承 argparse.ArgumentParser 并覆盖 parse_args() 或只是猴子修补该方法,但我想知道是否有更好的方法不需要覆盖标准库行为?
【问题讨论】:
-
您想如何处理选择列表中的不同选择?
-
@M.Klugerford 没关系,但为了简化,如果某个标志与不在选择列表中的编译器值一起传递,我想说脚本应该运行假设
clang3.4作为参数。 -
创建一个自定义action 怎么样?
-
@FamousJameous 这看起来很有希望。将对其进行调查并在此处更新。你有好的例子可以参考吗?
-
@Siddharth,完全披露,我从未在
argparse中编写过自定义操作。我在optparse做过类似的事情,只是从来没有argparse。这里有一个问题:stackoverflow.com/questions/8632354/… 这可能会有所帮助。
标签: python python-2.7 python-3.x argparse