2013-04-14 64 views
1

例如:有没有办法让argparse.ArgumentParser.parse_args()不会退出参数错误?

import argparse 

parser = arparse.ArgumentParser() 
# parser.add_argument(...) ... 
args = parser.parse_args(args_list) 

问题是,parser.parse_args如果在args_list错误自动退出。有没有一种设置可以让它提高友好的异常呢?我不想捕捉SystemExit并从中提取所需的错误消息,如果有任何解决方法。

+0

的可能重复的[Python的:提高argparse.ArgumentError后,argparse引发一般错误](http://stackoverflow.com/questions/15691762/python-after-raising-argparse -argumenterror-argparse-raise-generic-error) –

+0

那里的答案解决了你的问题。 –

+1

[Python argparse和控制/覆盖退出状态代码]的可能重复(http://stackoverflow.com/questions/5943249/python-argparse-and-controlling-overriding-the-exit-status-code) –

回答

5

你可以使用

args, unknown = parser.parse_known_args(args_list) 

然后,任何未知参数将被简单地unknown返回。

例如,

import argparse 
parser = argparse.ArgumentParser() 
parser.add_argument('--bar', action='store_true') 
parser.add_argument('cheese') 
args, unknown = parser.parse_known_args(['--swallow', 'gouda', 'african']) 
print(args) 
# Namespace(bar=False, cheese='gouda') 

print(unknown) 
# ['--swallow', 'african'] 
相关问题