阅读大概需要7分钟

跟随小博主,每天进步一丢丢

作者 yarving

链接 https://www.jianshu.com/p/fef2d215b91d

小编:

今天开始写比赛的代码,为了写的更加正规一些,这次就用了argparse。

大体用途就是通过命令行向程序传入参数

基本用法

prog.py是我在linux下测试argparse的文件,放在/tmp目录下,其内容如下:

测试:

  • 第一个没有任何输出和出错

  • 第二个测试为打印帮助信息,argparse会自动生成帮助文档

  • 第三个测试为未定义的-v参数,会出错

  • 第四个测试为未定义的参数foo,出错

positional arguments

positional arguments为英文定义,中文名叫有翻译为定位参数的,用法是不用带-就可用,修改prog.py的内容如下:

执行测试如下:

定义了一个叫echo的参数,默认必选

  • 第一个测试为不带参数,由于echo参数为空,所以报错,并给出用法(usage)和错误信息

  • 第二个测试为打印帮助信息

  • 第三个测试为正常用法,回显了输入字符串hahahaha

optional arguments

中文名叫可选参数,有两种方式:

  1. 一种是通过一个-来指定的短参数,如-h

  2. 一种是通过--来指定的长参数,如--help

这两种方式可以同存,也可以只存在一个,修改prog.py内容如下:

注意这一行:parser.add_argument("-v", "--verbosity", help="increase output verbosity")
定义了可选参数-v--verbosity,通过解析后,其值保存在args.verbosity变量中
用法如下:

  • 测试1中,通过-v来指定参数值

  • 测试2中,通过--verbosity来指定参数值

  • 测试3中,通过-h来打印帮助信息

  • 测试4中,没有给-v指定参数值,所以会报错

action='store-true'

上一个用法中-v必须指定参数值,否则就会报错,有没有像-h那样,不需要指定参数值的呢,答案是有,通过定义参数时指定action="store_true"即可,用法如下:

测试:

第一个例子中,-v没有指定任何参数也可,其实存的是TrueFalse,如果出现,则其值为True,否则为False

类型type

默认的参数类型为str,如果要进行数学计算,需要对参数进行解析后进行类型转换,如果不能转换则需要报错,这样比较麻烦
argparse提供了对参数类型的解析,如果类型不符合,则直接报错。如下是对参数进行平方计算的程序:

测试:

  • 第一个测试为计算2的平方数,类型为int,正常

  • 第二个测试为一个非int数,报错

  • 第三个为打印帮助信息

可选值choices=[]

上述action的例子中定义了默认值为TrueFalse的方式,如果要限定某个值的取值范围,比如6中的整形,限定其取值范围为0, 1, 2,该如何进行呢?
修改prog.py文件如下:

测试如下:

  • 测试1, 2, 3 为可选值范围,通过其值,打印不同的格式输出;

  • 测试4的verbosity值不在可选值范围内,打印错误

  • 测试5打印帮助信息

自定义帮助信息help

上面很多例子中都为help赋值,如

在打印输出时,会有如下内容:

也就是help为什么,打印输出时,就会显示什么

程序用法帮助

上面介绍了为每个参数定义帮助文档,那么给整个程序定义帮助文档该怎么进行呢?通过即可

修改prog.py内容如下:

打印帮助信息时即显示calculate X to the power of Y

互斥参数

在上个例子中介绍了互斥的参数

第一行定义了一个互斥组,第二、三行在互斥组中添加了-v-q两个参数,用上个例子中的程序进行如下测试:

可以看出,-q-v不出现,或仅出现一个都可以,同时出现就会报错。
可定义多个互斥组

默认参数default

介绍了这么多,有没有参数默认值该如何定义呢?
修改prog.py内容如下:

测试结果如下:

可以看到如果不指定-v的值,args.verbosity的值默认为1,为了更清楚的看到默认值,也可以直接打印进行测试。

IELTS a bit

jealous adj. 妒忌的;猜疑的;唯恐失去的;戒备的

quibble n. 谬论;双关语;遁词

vi. 诡辩;挑剔;模棱两可的话

vt. 对...诡辩

warn sb. of 警告某人

roaring adj. 喧闹的;兴胜的;狂风暴雨的

n. 咆哮;怒吼;吼声

v. 怒吼

apprehensive adj. 忧虑的;不安的;敏悟的;知晓的

推荐阅读:

精彩知识回顾

【珍藏版】长文详解python正则表达式

这些神经网络调参细节,你都了解了吗

谈谈我在自然语言处理入门的一些个人拙见

大数定律和中心极限定理的区别和联系

深度学习之激活函数详解

深度学习之卷积神经网络CNN理论与实践详解

深度学习之RNN、LSTM及正向反向传播原理

TreeLSTM Sentiment Classification

基于attention的seq2seq机器翻译实践详解

【干货】基于注意力机制的seq2seq网络


欢迎关注深度学习自然语言处理公众号,我会每天更新自己在机器学习深度学习NLPlinuxpython以及各种数学知识学习的一点一滴!再小的人也有自己的品牌!期待和你一起进步!

长按识别二维码

点个赞呗

【python】命令行参数argparse用法详解相关推荐

  1. python 命令行参数 argparse用法总结

    目录 一.使用到的具体函数 二.程序用法说明 三.位置参数 positional arguments 四.可选参数 optional arguments 五.类型 六.可选值 七.互斥参数 八.参数默 ...

  2. linux cp -r 参数,Linux系统中cp命令的参数及用法详解

    Linux系统中cp命令主要是用来复制文件或者目录.下面由学习啦小编为大家整理了Linux系统中cp命令的参数及用法详解的相关知识,希望对大家有帮助! Linux系统中cp命令的参数及用法详解:参数说 ...

  3. python getopt argparse_python OptParse模块和argparse命令行解析的用法详解

    https://www.cnblogs.com/wj-1314/p/8974021.html OptParse模块的简单介绍 Python 有两个内建的模块用于处理命令行参数: 一个是 getopt只 ...

  4. python命令行大全-用什么库写 Python 命令行程序(示例代码详解)

    一.前言 在近半年的 Python 命令行旅程中,我们依次学习了 argparse . docopt . click 和 fire 库的特点和用法,逐步了解到 Python 命令行库的设计哲学与演变. ...

  5. python 命令行参数—argparse模块的使用

    简单示例 我们先来看一个简单示例.主要有三个步骤: 创建 ArgumentParser() 对象 调用 add_argument() 方法添加参数 使用 parse_args() 解析添加的参数 .示 ...

  6. python 代码命令大全-用什么库写 Python 命令行程序(示例代码详解)

    一.前言 在近半年的 Python 命令行旅程中,我们依次学习了 argparse . docopt . click 和 fire 库的特点和用法,逐步了解到 Python 命令行库的设计哲学与演变. ...

  7. c语言中命令行参数argc,argv[]详解

    argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0 ...

  8. Python 命令行参数详解

    Python 命令行参数详解 0. 命令行参数 1. sys.argv 2. getopt 2.1 getopt.getopt 方法 2.2 Exception getopt.GetoptError ...

  9. 【Python】Python3.7.3 - Python命令行参数详解

    文章目录 Python命令行参数概览 -c cmd参数示例 -m mod参数示例 file参数示例 - 参数示例 命令行选项详解 -b 选项 -B选项 -d选项 -E选项 -h / -? / --he ...

  10. Python 命令行参数:Argparse 与 Click

    Python 命令行参数:Argparse 与 Click 简介 一.Argparse 模块 1.1 概念 1.2 基础 1.3 位置参数介绍 1.4 可选参数介绍 1.5 短选项 1.6 结合位置参 ...

最新文章

  1. 火热的激情、严密的计划成就双冠梦想——我的项管经验(转载)
  2. Android 设定横屏,禁止屏幕旋转,Activity重置 [更新视频播放器相关]
  3. 【转载】C#中List集合使用Exists方法判断是否存在符合条件的元素对象
  4. 【kafka】Kafka 2.0 ConsumerGroupCommand新功能
  5. 最全的spark基础知识解答
  6. 怎样固定计算机画图曲线,如何在电脑上画出固定长度的线段
  7. WCDMA功率控制与BER/BLER
  8. python爬虫案例-爬取西刺免费代理服务器IP等信息
  9. 各版本音标 IPA DJ KK 音标对照表
  10. View事件分发相关结论的源码解析
  11. php上证指数抽奖代码,上证指数etf基金代码,场内etf基金一览表
  12. excel软件做折线图
  13. R语言使用survival包的Surv函数创建生存对象、建立Cox回归模型(包含所有协变量)比较不同治疗方法生存率的差异、使用step函数基于AIC指标进行逐步回归法cox模型特征筛选(变量筛选)
  14. foobar2000在线标签服务器,在Foobar2000播放器中从音乐名获取标签的技巧
  15. 今日分享:自用的2款markdown在线编辑器推荐给你,快码住
  16. 一个demo理解什么是MVP
  17. 【聚英云农】无线节水灌溉系统应用智慧农业
  18. 如何在谷歌浏览器内设置http代理?
  19. 神马? 网飞(Netflix)程序员的基本薪资居然是谷歌的2倍多...
  20. Node.js stream模块(三)背压机制

热门文章

  1. Android高级之十二讲之如何降低应用内存消耗
  2. Apache 优化配置10条建议
  3. Ubuntu16.04安装ros kinetic版本
  4. laravel 图片
  5. Python 模拟简单区块链
  6. ACM学习历程—HDU5396 Expression(递推 计数)
  7. Oracle底子根基数据圭臬尺度存储格式浅析(三)——日期圭臬尺度(四)
  8. grpc+nginx架构部署指导
  9. 数值补码和原码计算方法介绍
  10. winform DataGridView的虚模式填充,CellValueNeeded事件的触发条件