【问题标题】:Argparse - error handling the required argumentArgparse - 处理所需参数的错误
【发布时间】:2022-02-15 22:34:07
【问题描述】:

我有一个脚本,它基本上要求用户将参数传递给程序,如下所示:

parser = argparse.ArgumentParser()
parser.add_argument("-t" , required = True)
args , unknown = parser.parse_known_args()

#rest of the code

现在我想做错误处理,以便它显示我想要的消息并运行我想要的函数,以防用户没有输入参数或输入错误。我试过把所有东西都试一下,但我找不到合适的错误类型来为我做这件事

try: 
  parser = argparse.ArgumentParser()
  parser.add_argument("-t" , required = True)
  args , unknown = parser.parse_known_args()

  #rest of the code
except argparse.ArgumentError:
   myfunc()

但是,这样,如果我在代码中遇到任何其他错误,它仍然会在这里捕获,而不是在他们自己的 try 和 except 中。

【问题讨论】:

  • 可能solution
  • 省略required,解析后自己做if args.t is None:测试。

标签: python argparse


【解决方案1】:

当缺少必需的参数时,Argparse 会引发 SystemExit。 只有在正确解析参数的情况下,您才能在 try/except 中使用 else 子句来执行其余代码:

try: 
    parser = argparse.ArgumentParser()
    parser.add_argument("-t" , required = True)
    args , unknown = parser.parse_known_args()
except SystemExit:
    func_for_wrong_args()
else:
    func_for_correct_args()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-26
    • 2019-01-11
    • 2017-01-14
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    • 2020-03-04
    相关资源
    最近更新 更多