无法识别的参数:True

问题描述 投票:0回答:4

代码:

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
python argparse
4个回答
7
投票

正如您所配置的那样,

--do_plot
选项不接受任何参数。
store_true
中的
argparse
参数表示该选项的存在将自动将
True
存储在相应的变量中。

因此,为了防止出现问题,请停止将

True
传递给
--do_plot


4
投票

据我所知,你不需要指明 True,只需包含

--do_plot
,就告诉它你想要做情节。另外,您没有将其配置为接受任何参数。

在源代码的以下行中:

if args.do_plot:

如果你确实在命令行中包含了

--do_plot
,它将被评估为True,如果没有,它将被评估为False。


1
投票

问题出在此处的规范中:

parser.add_argument('--do_plot', action="store_true",
                    help='Plot ...')

您已将 do_plot 声明为不带参数的选项;之后的 True 在你的参数协议中没有任何意义。这是一个因省略而关闭的选项,当存在时开启。


-1
投票

原因之一(我面临的)并希望我的假设能帮助你的问题是在 Ubuntu 上(在 Windows 上,IDK 但没关系),

当您从具有参数的

.py
文件(比如说
A.py
)导入函数时(人们创建
__main__
来测试功能函数,让我们调用
A
函数)。
.py
导入/使用
A
可能会混淆解析参数,因为
A.py
也解析参数等等。

因此,您可以通过重构来解决,或者只是(暂时)注释掉它们以先运行。

© www.soinside.com 2019 - 2024. All rights reserved.