argparse.ArgumentParser参数多次被调用引起的未识别 error: unrecognized arguments

在调用某个函数时,看着参数配置处是可以在调用时指定参数的,就不用每次修改源代码了。

parser.add_argument("--video_path", default='./data/test1209/10.avi', type=str)

OK,使用试试,调用函数时输入如下命令

python person_search_reid.py --video_path "./data/test1209/05.avi"

结果报错,说有不认识的参数

 error: unrecognized arguments: --video_path ./data/test1209/05.avi

啥?不认识?这不是你自己定义的吗?两根横线--,空格号分隔,和定义的属性一致保持的是下划线没错啊,怎么参数传进来你就不认识了?

后面继续调试,发现这个函数其实声明参数的时候没错,是因为他后面又调用了另外一个函数,那个函数在初始化的时候也用了

args = get_parser().parse_args()

这个声明,所以我传进去的video_path在这个函数初始化的时候又被call到了,但是呢,这个函数并没有声明过我有这个变量哦,你怎么进来了,我不认识你哎。所以就报错了。

那咋办?要么接下来就直接每次换个video_path就换个代码。但是好奇宝宝绝不认输,这个函数参数传递不会这么鸡肋吧,这样就不能用了吗?然后发现了parser.parse_known_args()这个函数,看描述好像是在调用的时候只选取自己需要的参数,不需要的留到后面去给别的接下来被调用的函数。于是我把后面那行调用参数的方法改成了如下:

args, unknown = get_parser().parse_known_args()
OK,能正常运行了,nice!

讲道理,其实我觉得吧,改前面那个函数的调用应该也是阔以的,但是我没去试了,遇到和我一样情况的可以试试。我就先去吃饭啦~~~(干饭人干饭魂)

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值