背景
最近一直训练模型,进行模型调参比较,但是随着模型参数多起来了,想获得不同参数模型结果也越来越麻烦。看看前辈以及github上开源项目的代码后,感觉这个感觉学到了很多。让你的python程序输入参数更像Linux那样输入,之前使用sys.argv,看到这个之后感觉太low了。这个就是 Python 标准库的一部分:Argparse[1]。那么下面让我们看看他是多么方便。
1 入门操作
由于这个包是Python标准库中的一部分,所以就不用安装了,直接使用即可。下面结合文章argparse基本用法[2]和自己的理解书写如下程序:
运行方式:linux系统使用比较多的还是命令,这里我也在终端里运行程序,如下是使用默认参数运行:
无参数运行
有参运行如下:
有参运行
看起来是不是挺有意思的。在上面的代码中,使用argparse.ArgumentParser构建一个参数解析器,其实也就是创建一个相关对象,description描述了这个解析器,在命令行中使用-h(--help)命令就可以看到,如下:
帮助文档
是不是很清晰。
使用这个参数解析器得有一些我们需要的参数,那么就使用parser.add_argument()方法去定义一些。上面的例子就是增加了两个参数:name, job。其中'-n'、'--name'都表示一个参数,而default是运行程序时不输入对应参数值所启用的值。现在相信你对这个有一定的了解了。下面我们再深入一下。
2 挖掘argparse更多功能
当然,上面的内容能够应付日常中一些任务。了解更多的内容,也会让我们事半功倍。下面的内容参考了argparse简要用法总结[3]部分内容,特此感谢。主要介绍parser.add_argument()中的其他参数,default就不再介绍了。
2.1 required:表示这个参数是否一定需要设置
如果设置了required=True,则在实际运行的时候不设置该参数将报错,在上面的程序上添加如下代码:
当不输入值时,则有:
必要参数
2.2 type: 参数类型
命令参数是传给其他功能模型使用,不同的功能模型则需要不同类型的数据输入,可以通过设置type直接将输入的数据转换成对应类型的数据(前提输入的数据格式就满足转换要求),修改need参数的代码如下:
运行查看:
指定参数类型
2.3 choices:参数值只能从几个选项里面选择
有时为了更加人性化提示用户使用,可以提升用户输入哪些值,慢慢地感觉到了Linux的味道了。现在我们修改need参数的代码如下:
使用-h命令查看修改后的样子:
帮助命令
可以看到,need参数的选择项。具体效果,朋友们可以自行试试,这里不费篇幅展示了,以下是输入选择范围外的结果。
选择范围外结果
2.4 dest:修改程序内部获取值方法
在命令行中输入的命令是-ne等形式把参数传入到程序,程序可通过其他属性获取对应参数值,就是dest,修改need参数如下:
运行:
获取真实值
上面还修改打印语句为:
3 总结
argparse是一个全面的参数处理库,功能比较强大,内容也比较多,暂时就介绍这么多吧。更多实际需要的功能,我们就根据需要查看官方文档以及网上的其他资料吧。
参考资料
[1]Argparse: https://docs.python.org/zh-cn/3.7/howto/argparse.html
[2]argparse基本用法: https://blog.csdn.net/yy_diego/article/details/82851661
[3]argparse简要用法总结: http://vra.github.io/2017/12/02/argparse-usage/
责任编辑:xj
原文标题:让Python程序参数输入更像Linux命令——argparse
文章出处:【微信公众号:自然语言处理爱好者】欢迎添加关注!文章转载请注明出处。
全部0条评论
快来发表一下你的评论吧 !