Python argparse模块传参的实现是怎样
Admin 2022-08-13 群英技术资讯 312 次浏览
港真的,今天是我第一次学习argsparse。因为用不到,自然也就没有学习的动力。但是现在电脑有点卡,每次打开pycharm太卡了,逼得我不得不开始使用命令行来测试代码。
我们先在桌面新建“arg学习”的文件夹,在该文件夹中新建demo.py文件,来看一个最简单的argsparse库的使用的例子。
import argparse parser = argparse.ArgumentParser(description='命令行中传入一个数字') #type是要传入的参数的数据类型 help是该参数的提示信息 parser.add_argument('integers', type=str, help='传入的数字') args = parser.parse_args() #获得传入的参数 print(args)
在这个代码中,我们在命令行传入一个数字。使用方法是打开命令行,先将工作目录cd到arg学习
cd desktop/arg学习
然后再命令行中输入python demo.py -h或者python demo.py --help, 这里我输入的是
python demo.py -h
在命令行中看到demo.py的运行结果如下
usage: demo.py [-h] integers 命令行中传入数字 positional arguments: integers 传入的数字 optional arguments: -h, --help show this help message and exit
现在我们在命令行中给demo.py 传入一个参数5,
python demo.py 5
运行,得到的运行结果是
Namespace(integers='5')
其实得到的这个结果Namespace(integers='5')是一种类似于python字典的数据类型。
我们可以使用 arg.参数名来提取这个参数
import argparse parser = argparse.ArgumentParser(description='命令行中传入一个数字') #type是要传入的参数的数据类型 help是该参数的提示信息 parser.add_argument('integers', type=str, help='传入的数字') args = parser.parse_args() #获得integers参数 print(args.integers)
在命令行中运行 python demo.py 5 , 运行结果为
5
现在在命令行中给demo.py 传入多个参数,例如传入1,2,3,4四个数字
python demo.py 1 2 3 4
运行报错
usage: demo.py [-h] integers demo.py: error: unrecognized arguments: 2 3 4
不能识别2 3 4,看源代码我们知道integers这个参数是位置参数,说明第一个数1是能识别。这里我们需要重新更改demo.py代码
import argparse parser = argparse.ArgumentParser(description='命令行中传入一个数字') parser.add_argument('integers', type=str, nargs='+',help='传入的数字') args = parser.parse_args() print(args.integers)
nargs是用来说明传入的参数个数,'+' 表示传入至少一个参数。这时候再重新在命令行中运行python demo.py 1 2 3 4得到
['1', '2', '3', '4']
add_argument中有type参数可以设置传入参数的数据类型。我们看到代码中有type这个关键词,该关键词可以传入list, str, tuple, set, dict等。例如我们把上面的type=str,改成type=int,这时候我们就可以进行四则运算。
import argparse parser = argparse.ArgumentParser(description='命令行中传入一个数字') parser.add_argument('integers', type=int, nargs='+',help='传入的数字') args = parser.parse_args() #对传入的数据进行加总 print(sum(args.integers)
在命令行中输入 python demo.py 1 2 3 4, 运行结果为
10
在命令行中传入参数时候,传入的参数的先后顺序不同,运行结果往往会不同,这是因为采用了位置参数,例如
import argparse parser = argparse.ArgumentParser(description='姓名') parser.add_argument('param1', type=str,help='姓') parser.add_argument('param2', type=str,help='名') args = parser.parse_args() #打印姓名 print(args.param1+args.param2)
在命令行中分别输入python demo.py 张 三和python demo.py 三 张,得到的 运行结果分别为
张三
和
三张
如果我们将代码
parser.add_argument('param1', type=str,help='姓')
和
parser.add_argument('param2', type=str,help='名')互
换位置,即第4行和第五行代码,再重新运行
python demo.py 张 三 和 python demo.py 三 张,得到的 运行结果分别为
三张
和
张三
为了在命令行中避免上述位置参数的bug(容易忘了顺序),可以使用可选参数,这个有点像关键词传参,但是需要在关键词前面加--,例如
import argparse parser = argparse.ArgumentParser(description='姓名') parser.add_argument('--family', type=str,help='姓') parser.add_argument('--name', type=str,help='名') args = parser.parse_args() #打印姓名 print(args.family+args.name)
在命令行中输入
python demo.py --family=张 --name=三
运行结果
张三
可选参数虽然写法比较繁琐,但是增加了命令行中的可读性,不容易因为参数传入顺序导致数据错乱。
add_argument中有一个default参数。有的时候需要对某个参数设置默认值,即如果命令行中没有传入该参数的值,程序使用默认值。如果命令行传入该参数,则程序使用传入的值。具体请看下面的例子
import argparse parser = argparse.ArgumentParser(description='姓名') parser.add_argument('--family', type=str, default='张',help='姓') parser.add_argument('--name', type=str, default='三', help='名') args = parser.parse_args() #打印姓名 print(args.family+args.name)
在命令行中分别输入 python demo.py 、 python demo.py --family=李
运行结果分别为
张三
和
李三
add_argument有一个required参数可以设置该参数是否必需。
import argparse parser = argparse.ArgumentParser(description='姓名') parser.add_argument('--family', type=str, help='姓') parser.add_argument('--name', type=str, required=True, default='', help='名') args = parser.parse_args() #打印姓名 print(args.family+args.name)
在命令行中输入 python demo.py --family=张,运行结果
usage: demo.py [-h] [--family FAMILY] --name NAME demo.py: error: the following arguments are required: --name
因为可选参数name的required=True,所以必须要传入。如果我们将其更改为False,程序运行结果
张
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
内容介绍1.引言2.工作原理3.使用Colorama库4.改变输出文本颜色5.改变输出文本背景6.改变输出文本亮度7.总结1.引言创建命令行程序很棒:命令行可以按照我们的设定完成相应的工作,相比GU
本文详细讲解了Pytest框架之fixture,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
内容介绍1.Python程序2.Dockerfile3.开始构建一个小的demo1.Python程序fromflaskimportFlaskapp=Flask(__name__)@app
所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用函数的使用包含两个步骤 :
在NumPy中,矩阵是ndarray的子类,与数学概念中的矩阵一样,NumPy中的矩阵也是二维的,可以使用 mat 、 matrix 以及 bmat 函数来创建矩阵。本文将详细讲解NumPy中矩阵和通用函数的使用,感兴趣的可以了解一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008