Python 命令行解析工具 argparse基本用法
作者:Python数据开发 发布时间:2023-06-15 01:34:46
在工作中,我们经常需要从命令行当中解析出指定的参数,而 Python 也提供了相应的标准库来做这件事情,比如 sys, optparse, getopt, argparse。这里面功能最强大的莫过于 argparse,下面就来看看它用法。
import argparse
# 使用 argparse 分为以下几步
# 1. 创建命令行解析器对象
parse = argparse.ArgumentParser(
description="这是命令行解析器"
)
# 2.给解析器添加命令行参数,可以添加任意个
parse.add_argument("-n", dest="name")
# 3. 从命令中将参数解析出来
args = parse.parse_args()
# 然后通过 args 便可以拿到相应的参数值
print(args.name)
我们执行一下看看,当前文件叫做 tools.py。
技术提升
本文由技术群粉丝投稿分享,项目源码、数据、技术交流提升,均可加交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友
怎么样,是不是很简单呢?所以我们的重点就在 add_argument 方法上面,来看看它都支持哪些参数。
import argparse
parse = argparse.ArgumentParser()
# 这里出现了 "-n" 和 "--name"
# 在命令行中可以通过 '-n 古明地觉' 或者 '--name 古明地觉' 进行指定
# 两者的含义是一样的,但 - 后面一般跟短参数,-- 后面跟长参数
# 然后是 dest,它表示获取相关参数值时,使用的名称
parse.add_argument("-n", "--name", dest="name")
# 这里只有一个短参数,那么在命令行中需要通过 -a 来指定
parse.add_argument("-a", dest="age")
# 这里只有一个长参数,那么在命令行中需要通过 --gender 来指定
parse.add_argument("--gender", dest="gender")
args = parse.parse_args()
print(f"name: {args.name}, age: {args.age}, gender: {args.gender}")
我们来试一下:
还是很简单的,一个 - 后面跟的是短参数,两个 - 后面跟的是长参数。在命令行中通过 - 或者 – 进行指定,解析完毕之后再通过 dest 参数指定的名字进行获取。
另外,虽然 - 后面跟短参数,-- 后面跟长参数,但我们这样写也是可以的。
parse.add_argument("-name", "--n", dest="name")
只不过这种写法比较怪异,应该写成 --name 和 -n,一个横杠后面是短参数,两个是长参数。
然后这些参数都是可以不指定的,会使用默认值 None。
如果我希望它是必传参数,该怎么办呢?
import argparse
parse = argparse.ArgumentParser()
parse.add_argument("--host", dest="host", required=True)
parse.add_argument("-p", dest="port", default=6379)
args = parse.parse_args()
print(f"host: {args.host}, port: {args.port}")
我们看到当 host 不指定的时候,就会报错。并且我们还通过 default 参数指定了默认值。
然后是参数值的类型,不管什么参数,只要我们在命令行当中传递了,那么解析出来的默认都是字符串类型。
import argparse
parse = argparse.ArgumentParser()
parse.add_argument("-p", dest="port", default=6379)
args = parse.parse_args()
print(f"port 类型: {args.port.__class__}")
那么可不可以指定参数的类型呢?答案是可以的。
import argparse
parse = argparse.ArgumentParser()
parse.add_argument("-p", dest="port", type=int)
args = parse.parse_args()
print(f"port 类型: {args.port.__class__}")
通过指定 type 为 int,那么在将参数值解析出来之后就会调用 int 进行转化,转化失败则报错。
同理,我们也可以换成其它类型,举个例子。
还是很简单的,甚至换成我们自定义的类,或者一个函数也是可以的,
此时我们就实现了给一个参数传递多个值,不过这种做法属于是曲线救国,我们应该通过另一个参数实现。
nargs 指定为 *,那么表示 --hobby 可以接收多个值,并且值之间使用空格进行分隔,最终会得到一个列表。如果指定 --hobby,但是不传值,那么会得到空列表。
来源:https://blog.csdn.net/m0_59596937/article/details/128365570


猜你喜欢
- 问题:开发中常使用Navicat查询数据库,并修改数据库中的值。今天发现查询结果为只读,不能修改。一般连表查不能修改我是知道的,但是单表查居
- 我们知道django的orm想实现自增,可以直接使用AutoField字段既可以实现,但是这种情况必须要求此字段是主键,但是我们知道主键只能
- 我就废话不多说了,大家还是直接看代码吧!print("thresh =",thresh)coords = np.colu
- 我就废话不多说了,大家还是直接看代码吧!import matplotlib.pyplot as pltimport numpy as npf
- 首先来解释一下SpringBoot首页设置的三种方式1.SpringBoot默认首页设置编写一个最简单的html文件 index.html&
- 在我们的算法中,有一种叫做线性查找。分为:顺序查找。 折
- 本文实例讲述了Python操作列表常用方法。分享给大家供大家参考,具体如下:使用for循环,遍历整个列表依次从列表中取出元素,存放到name
- 程序设计中三种基本机构是顺序结构、选择结构和循环结构。顺序结构语句是程序中最基础的语句,赋值语句、输入/输出语句、模块导入语句等都是顺序结构
- Python 超简单的聊天程序客户端:import socket, syshost = '10.248.27.23'# ho
- 索引和切片是NumPy中最重要最常用的操作。熟练使用NumPy切片操作是数据处理和机器学习的前提,所以一定要掌握好。文档:https://d
- 本文实例讲述了Go语言基础知识。分享给大家供大家参考,具体如下:GO文件目录结构该图是go-windows的目录结构如图,go的程序应该是在
- 记录一下Linux虚拟机下MySQL安装配置方法一、 下载mysql5.7http://mirrors.sohu.com/mysql/MyS
- 利用sklearn画出决策树并保存为PDF下载Graphviz进入官网下载并安装:https://graphviz.gitlab.io/_p
- substr 函数:截取字符串 语法:SUBSTR(string,start, [length])string:表示源字符串,即要
- np.where共两种用法:第一种np.where(condition, x, y),即condition为条件,当满足条件输出为x,不满足
- 由于曾经和他是同一个团队的,所以对于其我很熟悉他那“洁癖”的做法,对于他的很多的观点我也非常的赞同;但是有一件非常不理解的地方就
- 为了偷个懒,利用这个数据库,但是在附加的时候出错了。错误如下:一开始还以为数据库位置存在问题,所以重新放置了一个位置,仍然无效。最后,上网寻
- 1.在vue项目根目录下新建vue.config.js(不是在src下面)vue.config.js配置文件:module.exports
- 自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。Traits 是一种为类似 PHP 的单继承语言而准备的代
- Fucklt.py 使用了最先进的技术能够使你的代码不管里面有什么样的错误,你只管 FuckIt,程序就能"正常"执行,