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

    文章

    11814

    浏览量

    219532
  • python
    +关注

    关注

    58

    文章

    4884

    浏览量

    90300

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Linux新手最常踩的10个命令坑介绍

    从事运维工作十余年,带过不少新人,发现有些命令错误几乎是每个Linux使用者都曾经遇到过的。这些错误轻则导致操作失败、浪费时间,重则引发数据丢失、服务中断、生产事故。本篇文章结合2026年
    的头像 发表于 04-09 10:11 193次阅读

    使用PYTHON进行的跨平台仿真

    应用案例,其中我们在一维和二维光栅上执行参数扫描。 使用Python运行VirtualLab Fusion光学仿真 我们将演示如何使用Python在VirtualLab Fusion中运行光学仿真
    发表于 04-02 08:21

    [VirtualLab] 使用Python运行VirtualLab Fusion光学仿真

    更改为样本文件的文件夹。单击打开main.py文件。 1.4 打开命令选项板,键盘输入Python:选择解释器,确保选择Python 3.11.0。在此之后,您还可以在状态栏中看到您
    发表于 03-31 09:39

    [VirtualLab] 使用Python进行跨平台参数扫描

    摘要 VirtualLab Fusion允许外部访问其建模技术、求解器和结果。这有助于应用其他数据处理或优化工具来进一步研究光学模拟。在本示例中,我们演示如何使用Python脚本运行参数扫描,以及
    发表于 03-31 09:36

    Linux新手必看!3个命令搞定所有“求助”,再也不用到处查文档

    其实根本不用慌——Linux 早就自带了 “说明书”,学会 3 个核心帮助命令,就能解决 90% 的操作疑问,比百度还快!
    的头像 发表于 02-03 15:28 826次阅读
    <b class='flag-5'>Linux</b>新手必看!3个<b class='flag-5'>命令</b>搞定所有“求助”,再也不用到处查文档

    Linux 下开发嵌入式必备命令速查表

    管理等环节轻松应对各种问题。今天,我们整理了一份Linux下嵌入式开发必备命令速查表,你一篇文章就能快速查阅。一、文件与目录管理命令在嵌入式开发中,你经常需要操作
    的头像 发表于 01-19 09:06 1019次阅读
    <b class='flag-5'>Linux</b> 下开发嵌入式必备<b class='flag-5'>命令</b>速查表

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

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

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

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

    Linux内核参数调优方案

    在高并发微服务环境中,网络性能往往成为K8s集群的瓶颈。本文将深入探讨如何通过精细化的Linux内核参数调优,你的K8s节点网络性能提升30%以上。
    的头像 发表于 08-06 17:50 1161次阅读

    Linux基础命令which详解

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

    linux系统awk特殊字符命令详解

    Linux系统中,awk 是一种非常强大的文本处理工具,能够对文本数据进行分析、格式化和筛选。利用其内置的特殊字符和操作符,用户可以实现复杂的数据处理任务。以下对一些常见的awk特殊字符和操作符
    的头像 发表于 07-28 16:38 732次阅读

    一文掌握Linux命令

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

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

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

    allegro软件走线命令参数不显示如何解决

    在PCB设计中,走线命令是频繁使用的功能之一。执行走线命令后,通常会在Options面板中显示线宽、层、角度等设置选项,用于调整走线参数。然而,有时执行走线命令后,Options面板中
    的头像 发表于 06-05 09:30 2335次阅读
    allegro软件走线<b class='flag-5'>命令</b>下<b class='flag-5'>参数</b>不显示如何解决

    Linux常用命令大全

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