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
    +关注

    关注

    87

    文章

    11233

    浏览量

    208980
  • python
    +关注

    关注

    56

    文章

    4784

    浏览量

    84481

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

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

收藏 人收藏

    评论

    相关推荐

    Linux系统中shell命令解析

    shell是Linux系统的用户界面,提供了用户与内核交互的一种接口,它接收用户输入命令并到送到内核去执行,因此也被称为Linux命令
    的头像 发表于 11-05 15:40 148次阅读

    Linux实用命令大全

    Linux实用命令大全
    的头像 发表于 10-23 13:50 188次阅读
    <b class='flag-5'>Linux</b>实用<b class='flag-5'>命令</b>大全

    Linux lsof命令的基本用法

    linux 系统中,一切皆文件。通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以 lsof 命令不仅可以查看进程打开的文件、目录,还可以查看进程监听的端口等 socket 相关的信息。本文将介绍 lsof 命令
    的头像 发表于 10-23 11:52 173次阅读
    <b class='flag-5'>Linux</b> lsof<b class='flag-5'>命令</b>的基本用法

    Linux中cut命令的实用示例

    Linux command cut 用于文本处理。您可以使用此命令通过选择列从文件中提取部分文本。
    的头像 发表于 08-05 15:14 294次阅读

    util-linux修复WallEscape漏洞,影响Linux系统wall命令使用

    WallEscape 主要影响“wall”命令操作,Linux 系统中的常规下,该指令被用作向系统所有登录用户的终端发布消息。然而在处理命令参数
    的头像 发表于 03-29 14:35 943次阅读

    linux命令概述

    电子发烧友网站提供《linux命令概述.pdf》资料免费下载
    发表于 03-11 09:18 3次下载

    如何使用linux下gdb来调试python程序

    中,我们将介绍如何在Linux中使用GDB来调试Python程序。 一、安装GDB和Python调试符号 在使用GDB调试Python
    的头像 发表于 01-31 10:41 2437次阅读

    Linux基本命令总结

    都说Linux命令多,实际工作中我们又有多少命令会接触用到呢?本文跟大家分享Linux运维工作中常用的600个命令,可以说这些
    的头像 发表于 01-11 10:32 944次阅读

    labview向程序发送命令时出现问题怎么解决

    的通信协议是否配置正确。如果使用网络连接,请确保IP地址和端口号设置正确。如果使用串口通信,请检查串口设置是否正确。 检查命令格式:确保LabVIEW发送的命令格式与目标程序所需的格式相匹配。读取目标
    的头像 发表于 12-28 11:08 1252次阅读

    常用Linux命令总结

    今天浩道跟大家分享一些平时运维工作中常用到的Linux命令你关键时候也可以在领导面前露一手!大家不要觉得命令使用简单,实际上浩道接触的现场同事,
    的头像 发表于 12-26 09:49 413次阅读

    深入了解Linux中vi命令的使用

    深入了解Linux中vi命令的使用 VI是一款在Linux系统中使用的文本编辑器,它是一款功能强大、灵活性高的编辑器。VI编辑器具有非常高效的命令行操作方式,并且在各个版本的
    的头像 发表于 12-25 11:15 438次阅读

    Linux常用命令自学手册》+入门Linux命令,就看这本书保你成高手

    非常感谢发烧友论坛和作者提供的机会,我有幸阅读这本实体书。 开篇发现Linux常用命令自学手册做的真符合用户手册的需要,每一条命令做成了一个单页,也不用翻页,前前后来查找。
    发表于 12-23 21:46

    Linux常用命令自学手册》+试读报告

    。 总之,《Linux常用命令自学手册》是一本非常实用的书籍,它不仅我深入了解了Linux命令行的基本操作和高级用法,还让我掌握了许多实用
    发表于 12-14 16:59

    idea如何输入命令参数

    在许多软件开发和系统管理的任务中,我们经常需要向应用程序传递命令参数命令参数是在运行时传递给程序
    的头像 发表于 12-06 15:01 1096次阅读

    如何在Linux中使用htop命令

    本文介绍如何在 Linux 中使用 htop 命令
    的头像 发表于 12-04 14:45 1927次阅读
    如何在<b class='flag-5'>Linux</b>中使用htop<b class='flag-5'>命令</b>