有没有办法让argparse.ArgumentParser.parse_args()不要退出参数错误?

Mat*_*att 3 python systemexit argparse

例如:

import argparse

parser = arparse.ArgumentParser()
# parser.add_argument(...) ...
args = parser.parse_args(args_list)
Run Code Online (Sandbox Code Playgroud)

问题是,parser.parse_args如果出现错误,将自动退出args_list.是否有一个设置让它引发更友好的异常?SystemExit如果有任何方法,我不想要从中捕获并从中提取所需的错误消息.

unu*_*tbu 7

你可以用

args, unknown = parser.parse_known_args(args_list)
Run Code Online (Sandbox Code Playgroud)

然后,任何未知的参数将被简单地返回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']
Run Code Online (Sandbox Code Playgroud)