error: argument -s/--source is required

error: argument -s/--source is required

我从 Github 复制了这段代码,但它对我不起作用。

示例代码:

ap = argparse.ArgumentParser()
ap.add_argument("-s", "--source", required=True, help="Path to the source of shapes")
ap.add_argument("-t", "--target", required=True, help="Path to the target image")
args = vars(ap.parse_args())

和这个输出

usage: detect_leaf.py [-h] -s SOURCE -t TARGET
detect_leaf.py: error: argument -s/--source is required

请帮帮我。谢谢

我想你没有把参数 -s 放在 python 执行命令中。 假设 python 代码保存在名为 detect_leaf.py 的文件中 你必须把参数 -s 像下面这样

python detect_leaf.py -s SOURCE -t TARGET

并且有两种方法可以访问参数值,如下所示

import argparse
ap = argparse.ArgumentParser(description='Process some integers.')
ap.add_argument("-s", "--source", required=True,  help="Path to the source of shapes")
ap.add_argument("-t", "--target", required=True,  help="Path to the target image")

#It's Dictionary
vars_args = vars(ap.parse_args())

print(vars_args['source'])
print(vars_args['target'])

#It's NameSpace object
parsed_args = ap.parse_args()

print(parsed_args.source)
print(parsed_args.target)

你的问题标题中的错误信息非常明显。

ap.add_argument("-s", "--source", required=True, help="Path to the source of shapes")

你把required=True放在这个参数上。这意味着它是必需的。因此,如果您尝试 运行 此脚本,并且不在命令行中放置 --source(或 -s)参数,您将收到错误消息。

如果您不想要求它,请不要输入 required=True


另一方面,您在问题末尾显示的输出不可能来自此代码。您的 argparse 规范中没有 -src-trg 参数。也许您正在 运行ning 一个完全不同的程序?如果是这样,我们无法通过查看此程序的代码来调试该程序。