代码:
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Build dataset')
parser.add_argument('--do_plot', action="store_true",
help='Plot the images')
args = parser.parse_args()
错误:
$ python make_dataset.py --do_plot True
usage: make_dataset.py [-h] [--do_plot]
make_dataset.py: error: unrecognized arguments: True
正如您所配置的那样,
--do_plot
选项不接受任何参数。 store_true
中的 argparse
参数表示该选项的存在将自动将 True
存储在相应的变量中。
因此,为了防止出现问题,请停止将
True
传递给 --do_plot
。
据我所知,你不需要指明 True,只需包含
--do_plot
,就告诉它你想要做情节。另外,您没有将其配置为接受任何参数。
在源代码的以下行中:
if args.do_plot:
如果你确实在命令行中包含了
--do_plot
,它将被评估为True,如果没有,它将被评估为False。
问题出在此处的规范中:
parser.add_argument('--do_plot', action="store_true",
help='Plot ...')
您已将 do_plot 声明为不带参数的选项;之后的 True 在你的参数协议中没有任何意义。这是一个因省略而关闭的选项,当存在时开启。
原因之一(我面临的)并希望我的假设能帮助你的问题是在 Ubuntu 上(在 Windows 上,IDK 但没关系),
当您从具有参数的
.py
文件(比如说 A.py
)导入函数时(人们创建 __main__
来测试功能函数,让我们调用 A
函数)。 .py
导入/使用 A
可能会混淆解析参数,因为 A.py
也解析参数等等。
因此,您可以通过重构来解决,或者只是(暂时)注释掉它们以先运行。