Python argparse 读命令行数据的鲁棒性

Python argparse 读命令行数据的鲁棒性

本人小白一个,对命令行输入不是很了解。某次运行程序时本应该输入--config_files, 但输入成了--config_fil。多次运行程序后才发现这个问题,但之前的程序运行没有问题,参数依然按照config_files读入了,后来经过自己试验后才发现argparse对读入的识别不是全匹配,只要可以区分开,它就不往后面检查了。
比如你的参数代码是这样的:

parser.add_argument('--model', '-m', type=str, default='BPR', help='name of models')
parser.add_argument('--dataset', '-d', type=str, default='ml-100k', help='name of datasets')
parser.add_argument('--config_files', type=str, default=None, help='config files')

那么当你命令行输入:--c="xxx"或者 --co="xxx", 它都会把xxx按照config_file读入。
但如果你的代码是这样的:

parser.add_argument('--model', '-m', type=str, default='BPR', help='name of models')
parser.add_argument('--dataset', '-d', type=str, default='ml-100k', help='name of datasets')
parser.add_argument('--config_files', type=str, default=None, help='config files')
parser.add_argument('--config_dict', type=str, default=None, help='config dict')

那么,如果你只是输入--c 或者--co,因为程序没法区分这个参数是属于config_dict还是config_files, 所以会报error: ambiguous option的错。
总之只要我们输入的参数标记可以被区分开, 那么即便不完整输入都可以被正确识别。
PS: 当然,如果你输入--config_filesssss这种,还是没法识别为config_files的。

以上就是我对这个问题的记录,希望可以给大家提供参考。当然,我没看过parser的源码,如果有错误,欢迎指正。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值