0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何让Python程序参数输入更像Linux命令

自然语言处理爱好者 来源:自然语言处理爱好者 作者:菊子皮 2020-12-28 14:22 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

背景

最近一直训练模型,进行模型调参比较,但是随着模型参数多起来了,想获得不同参数模型结果也越来越麻烦。看看前辈以及github上开源项目的代码后,感觉这个感觉学到了很多。让你的python程序输入参数更像Linux那样输入,之前使用sys.argv,看到这个之后感觉太low了。这个就是 Python 标准库的一部分:Argparse[1]。那么下面让我们看看他是多么方便。

1 入门操作

由于这个包是Python标准库中的一部分,所以就不用安装了,直接使用即可。下面结合文章argparse基本用法[2]和自己的理解书写如下程序:

pIYBAF_ped-AEWh1AABVgwZNyw0775.jpg

运行方式:linux系统使用比较多的还是命令,这里我也在终端里运行程序,如下是使用默认参数运行:

01c0a8a6-4693-11eb-8b86-12bb97331649.png

无参数运行

有参运行如下:

01ecac30-4693-11eb-8b86-12bb97331649.png

有参运行

看起来是不是挺有意思的。在上面的代码中,使用argparse.ArgumentParser构建一个参数解析器,其实也就是创建一个相关对象,description描述了这个解析器,在命令行中使用-h(--help)命令就可以看到,如下:

022a0364-4693-11eb-8b86-12bb97331649.png

帮助文档

是不是很清晰。

使用这个参数解析器得有一些我们需要的参数,那么就使用parser.add_argument()方法去定义一些。上面的例子就是增加了两个参数:name, job。其中'-n'、'--name'都表示一个参数,而default是运行程序时不输入对应参数值所启用的值。现在相信你对这个有一定的了解了。下面我们再深入一下。

2 挖掘argparse更多功能

当然,上面的内容能够应付日常中一些任务。了解更多的内容,也会让我们事半功倍。下面的内容参考了argparse简要用法总结[3]部分内容,特此感谢。主要介绍parser.add_argument()中的其他参数,default就不再介绍了。

2.1 required:表示这个参数是否一定需要设置

如果设置了required=True,则在实际运行的时候不设置该参数将报错,在上面的程序上添加如下代码:

pIYBAF_pefKASLszAAANl8Zh6lU452.jpg

当不输入值时,则有:

02ad7dd4-4693-11eb-8b86-12bb97331649.png

必要参数

2.2 type: 参数类型

命令参数是传给其他功能模型使用,不同的功能模型则需要不同类型的数据输入,可以通过设置type直接将输入的数据转换成对应类型的数据(前提输入的数据格式就满足转换要求),修改need参数的代码如下:

pIYBAF_pegSAJLLWAAAPsdueYo4869.jpg

运行查看:

02d5282a-4693-11eb-8b86-12bb97331649.png

指定参数类型

2.3 choices:参数值只能从几个选项里面选择

有时为了更加人性化提示用户使用,可以提升用户输入哪些值,慢慢地感觉到了Linux的味道了。现在我们修改need参数的代码如下:

pIYBAF_pehWAT7mCAAAVEW6XWcU234.jpg

使用-h命令查看修改后的样子:

02feb8c0-4693-11eb-8b86-12bb97331649.png

帮助命令

可以看到,need参数的选择项。具体效果,朋友们可以自行试试,这里不费篇幅展示了,以下是输入选择范围外的结果。

0353e5a2-4693-11eb-8b86-12bb97331649.png

选择范围外结果

2.4 dest:修改程序内部获取值方法

在命令行中输入的命令是-ne等形式把参数传入到程序,程序可通过其他属性获取对应参数值,就是dest,修改need参数如下:

o4YBAF_peimAMe9WAAAYOARjIWo842.jpg

运行:

039cc11e-4693-11eb-8b86-12bb97331649.png

获取真实值

上面还修改打印语句为:

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

文章出处:【微信公众号:自然语言处理爱好者】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11635

    浏览量

    218144
  • python
    +关注

    关注

    57

    文章

    4860

    浏览量

    89661

原文标题:让Python程序参数输入更像Linux命令——argparse

文章出处:【微信号:NLP_lover,微信公众号:自然语言处理爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    shell基本介绍及常用命令之shell基本介绍

    的shell命令Linux命令一般由三部分组成:Command [option] [parameter]。说明:1.[]部分中的内容是可选项;2.命令,选项,
    发表于 09-28 09:05

    测试工程师都在用的Linux命令清单(建议收藏)

    作为一名工程师,熟练掌握Linux命令是基本功中的基本功。无论是日常工作中的系统维护,还是面试时的技术考核,Linux命令都是绕不开的核心技能。本文将从实战角度出发,系统梳理工程师必须
    的头像 发表于 08-08 10:06 531次阅读
    测试工程师都在用的<b class='flag-5'>Linux</b><b class='flag-5'>命令</b>清单(建议收藏)

    Linux基础命令which详解

    Linux系统中,which命令用于查找并显示指定命令的可执行文件路径。这对于系统管理员和开发人员来说是一个非常有用的工具,可以帮助定位命令所在的位置,确认
    的头像 发表于 07-29 17:58 617次阅读

    一文掌握Linux命令

    作为一名运维工程师,熟练掌握Linux命令是基本功中的基本功。无论是日常工作中的系统维护,还是面试时的技术考核,Linux命令都是绕不开的核心技能。本文将从实战角度出发,系统梳理运维工
    的头像 发表于 07-22 15:23 473次阅读

    linux虚拟环境中调用Linux 版matlab编译的python库时出错

    各位大神,能否帮忙解决以下问题,不胜感激。 问题描述:使用linux版的matlab2018b使用mcc -v -W python:CAO_python -T link:lib ... -d
    发表于 07-18 10:40

    Linux常用命令大全

    Linux常用命令是指在Linux操作系统中广泛使用的命令工具,这些命令工具可以完成各种不同的任务,如管理文件和目录、操作进程、网络通信、软
    的头像 发表于 05-03 18:08 1634次阅读

    零基础入门:如何在树莓派上编写和运行Python程序

    是一种非常有用的编程语言,其语法易于阅读,允许程序员使用比汇编、C或Java等语言更少的代码行。Python编程语言最初实际上是作为Linux的脚本语言而开发的。Py
    的头像 发表于 03-25 09:27 1581次阅读
    零基础入门:如何在树莓派上编写和运行<b class='flag-5'>Python</b><b class='flag-5'>程序</b>?

    Linux常用命令行总结

    学习了一段时间的linux之后,开始着手基本命令的学习,这里主要记录一些学习过程中重要的知识点供以后查阅。
    的头像 发表于 03-03 10:40 821次阅读
    <b class='flag-5'>Linux</b>常用<b class='flag-5'>命令</b>行总结

    Linux系统中最重要的三个命令

    Linux三剑客是Linux系统中最重要的三个命令,它们以其强大的功能和广泛的应用场景而闻名。这三个工具的组合使用几乎可以完美应对Shell中的数据分析场景,因此被统称为Linux三剑
    的头像 发表于 03-03 10:37 826次阅读

    Linux ip命令常用操作

    Linux ip命令常用操作 在Linux系统中,ip命令是用于管理网络接口和路由的强大工具。相比于旧的 ifconfig命令,ip
    的头像 发表于 02-19 10:23 1105次阅读

    Python Connector for InterBase连接解决方案

    适用于 InterBase 的 Python 连接器 Python Connector for InterBase 是一种可靠的连接解决方案,用于从 Python 应用程序访问 Int
    的头像 发表于 01-22 14:34 739次阅读

    常用linux命令

    使用command A | command B | command C命令,将A命令产生的标准输出作为B命令的标准输入(注意只能接收前一个命令
    的头像 发表于 01-20 14:26 671次阅读

    Linux实时查看日志的四种命令详解

    如何在Linux中实时查看日志文件的内容?那么有很多实用程序可以帮助用户在文件更改或不断更新时输出文件的内容。在Linux中实时显示文件内容的常用命令是tail
    的头像 发表于 01-13 10:45 3994次阅读
    <b class='flag-5'>Linux</b>实时查看日志的四种<b class='flag-5'>命令</b>详解

    详解Linux sort命令之掌握排序技巧与实用案例

    linux系统使用过程中,提供了sort排序命令,支持常用的排序功能。 常用参数 sort命令支持很多参数,常用
    的头像 发表于 01-09 10:10 1605次阅读

    Linux grep命令详解

    Linux grep命令是一种非常常用的文本搜索工具,它可以在给定的文件中搜索匹配的字符串,并输出匹配的行。grep是全称“global search regular expression print”,可以识别正则表达式,并使用正则表达式进行搜索。
    的头像 发表于 12-25 09:39 1818次阅读