argparse学习笔记
argparse是 Python 的一个内置模块,用于编写用户友好的命令行接口。使用 argparse,你可以很容易地为 Python 脚本添加参数解析功能,使得脚本可以接受命令行选项和参数。学起来也比较简单,接下来我会详细讲解。
在argparse里面,有位置参数和可选参数。位置参数是必不可少的,在命令行里面不可以缺少这个选项,并且这个选项前不需要加-或者--一类的符号;可选参数则可有可无,使用的时候需要在选项之前加上-或者--。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,
help="display a square of a given number")
parser.add_argument("-v", "--verbosity", type=int,
help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2
if args.verbosity == 2:
print(f"the square of {args.square} equals {answer}")
elif args.verbosity == 1:
print(f"{args.square}^2 == {answer}")
else:
print(answer)
在这个例子中,首先需要创建一个ArgumentParser的对象,然后可以通过add_argument添加需要的参数。"square"前面没有带-或者--,这是一个位置参数,而且-v或者--verbose则是可选参数。此外,还可以在add_argument当中设定type参数来指定参数的类型。在设定完参数之后,调用parse_args来完成参数的解析,之后就可以愉快地去解析具体参数的值了。
python demo.py 20 -v 1/python demo.py 20 --verbose 1/python demo.py -v 1 20/python demo.py --verbose 1 20
>>20^2 == 400
// 注意,位置参数的位置顺序是可以调换的。
python demo.py 20 -v 2/python demo.py 20 --verbose 2/python demo.py -v 2 20/python demo.py --verbose 2 20
>>the square of 20 equals 400
也可以这样玩。
parser.add_argument("-v", "--verbosity", action='count',
help="increase output verbosity")
python demo.py 20 -v/python demo.py 20 -vv
不少Linux的命令行都是可以通过这种方式来输出更加详细的信息,这样就不用手动指定参数了。不过这段代码依然有缺陷,来看看:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,
help="display a square of a given number")
parser.add_argument("-v", "--verbosity", action='count',
help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2
if args.verbosity >= 2:
print(f"the square of {args.square} equals {answer}")
elif args.verbosity >= 1:
print(f"{args.square}^2 == {answer}")
else:
print(answer)
当我们指定参数-vvv或者-vvvv或者更多的v的时候,反而只能输出一个最简单的计算结果,所以代码的分支条件里面"=="改为">=",这样就大功告成啦。为了更加完美,还可以引入静默模式。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,
help="display a square of a given number")
parser.add_argument("-v", "--verbosity", action='store_true',
help="increase output verbosity")
parser.add_argument('-q', '--quiet', action='store_true')
args = parser.parse_args()
answer = args.square**2
if args.quiet:
print(answer)
elif args.verbosity:
print(f"the square of {args.square} equals {answer}")
else:
print(f"{args.square}^2 == {answer}")
这样就有模有样了,命令行的基本功能也齐全了。还可以组合参数:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-v", "--verbosity", action='store_true',
help="increase output verbosity")
parser.add_argument('-q', '--quiet', action='store_true')
args = parser.parse_args()
if args.verbosity:
print('v is enabled')
if args.quiet:
print('q is enabled')
python demo.py -v/python demo.py -q/python demo.py -vq/python demo.py -qv
看到这里的朋友可以点点赞或者分享给身边的朋友,以后会继续带来更多有关C++或者Python语言的有趣知识。
argparse学习笔记的更多相关文章
- Python命令模块argparse学习笔记(二)
argparse模块可以设置两种命令参数,一个是位置参数,一个是命令参数 位置参数 import argparse parser = argparse.ArgumentParser(descripti ...
- Python命令模块argparse学习笔记(一)
首先是关于-h/--help参数的设置 description:位于help信息前,可用于描述helpprog:描述help信息中程序的名称epilog:位于help信息后usage:描述程序的用途a ...
- Python命令模块argparse学习笔记(四)
默认参数 ArgumentParser.set_defaults(**kwargs) set_defaults()可以设置一些参数的默认值 >>> parser = argparse ...
- Python命令模块argparse学习笔记(三)
参数组 ArgumentParser.add_argument_group(title=None, description=None) 默认情况下,当显示帮助消息时,ArgumentParser将命令 ...
- [编程基础] Python命令行解析库argparse学习笔记
Python argparse教程展示了如何使用argparse模块解析Python中的命令行参数. 文章目录 1 使用说明 1.1 Python argparse可选参数 1.2 Python ar ...
- Python学习笔记-argparse模块
Python学习笔记-argparse模块 optparseargparse 昨天学习了一个简单的端口扫描器的脚本,其中涉及到了optparse模块,网上关于此模块的介绍已有很多,但这个模块已经不更新 ...
- Noah的学习笔记之Python篇:命令行解析
Noah的学习笔记之Python篇: 1.装饰器 2.函数“可变长参数” 3.命令行解析 注:本文全原创,作者:Noah Zhang (http://www.cnblogs.com/noahzn/) ...
- tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)
续集请点击我:tensorflow学习笔记——使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...
- Linux Shell输出颜色字符学习笔记(附Python脚本实现自动化定制生成)
齿轮发出咔嚓一声,向前进了一格.而一旦向前迈进,齿轮就不能倒退了.这就是世界的规则. 0x01背景 造了个轮子:御剑师傅的ipintervalmerge的Python版本.觉得打印的提示信息如果是普通 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
随机推荐
- MySQL学习笔记-数据操作语言
SQL-数据操作语言(DML) 数据操作语言,用于对数据库中表的数据记录进行增删改的操作 一.添加数据(insert) 1. 给指定字段添加数据 insert into {表名} ({字段1},{字段 ...
- vue导航固定 吸顶效果
吸顶效果 如何得到滚动条滚动的距离,document.documentElement.scrollTop 通过onscroll事件来完成滚动事件监听,达到吸顶值后,进行样式更换
- kettle从入门到精通 第六十六课 ETL之kettle kettle阻塞教程,轻松获取最后一行数据,so easy
场景:ETL沟通交流群内有小伙伴反馈,如何在同步一批数据完成之后记录下同步结果呢?或者是调用后续步骤.存储过程.三方接口等. 解决:使用步骤Blocking step进行阻塞处理即可. 1.下面的de ...
- disabled 和 readonly 都是 HTML 表单元素的属性,它们有一些相同点和不同点。
disabled 和 readonly 都是 HTML 表单元素的属性,它们有一些相同点和不同点. 相同点: disabled 和 readonly 属性都可以用于表单中的输入框.文本域等元素,用于控 ...
- 导出excel文件接口代码示例
导出excel文件接口代码示例 1.该导出接口,token不能通过请求头来传输,需要在get请求的参数中带出来2.验证token的方法除了在拦截器中统一拦截,针对get接口传参数的方式也需要单独在接口 ...
- Java序列化和反序列化 Serializable BeanUtils.copyProperties赋值属性方法
Java序列化和反序列化 Serializable BeanUtils.copyProperties赋值属性方法 package com.example.core.mydemo.java; impor ...
- int类型在接收null会报错,需要使用Java包装类型Integer,且Integer不能equal String字符串
int类型在接收null会报错,需要使用Java包装类型Integer,且Integer不能equal String字符串 package com.example.core.mydemo.json2; ...
- 『手撕Vue-CLI』完善提示信息
前言 经过『手撕Vue-CLI』自动安装依赖,已经实现了自动安装依赖的功能. 然而,虽然项目已复制并安装依赖,但其提示信息并不够友好,于是我试着去运行了一下vue create,发现其提示信息是这样的 ...
- MongoDB文档存储
非关系型数据库存储 NoSQL,全称 Not Only SQL,意为不仅仅是 SQL,泛指非关系型数据库.NoSQL 是基于键值对的,而且不需要经过 SQL 层的解析,数据之间没有耦合性,性能非常高. ...
- RK3568J“麒麟”+“翼辉”国产系统正式发布,“鸿蒙”也正在路上!
RK3568J "麒麟" + "翼辉"国产系统正式发布 近期,创龙科技RK3568J全国产平台(国产化率100%,提供报告)已正式适配两大国产系统:银河麒麟嵌入 ...