ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

argparse命令行解析Python模块

2022-09-09 14:03:20  阅读:228  来源: 互联网

标签:argparse parser Python args -- 参数 命令行 type


最近需要给一个python脚本做成通用的脚本,不需要看源码,其他人拿到脚本就知道该如何使用。sys库的argv办不到这种效果,但Python的argparse库能够很好达到这个效果,拿到脚本,输入-h,就可以看到各参数含义以及脚本的作用,那么下面直接来学习argparse库的一些简单使用方法

 

argparse介绍

argsparse是python的命令行解析的标准模块,内置于python,不需要安装。这个库可以让我们直接在命令行中就可以向程序中传入参数并让程序运行

 

argparse简单例子

使用步骤:

1、实例化一个argparse.ArgumentParser对象,并添加description参数用来描述脚本的作用

2、通过add_argument方法来设置参数的名称、数据类型,参数含义,默认值等

3、parse_args()用来解析传入的参数,返回的会是一种类似于python字典的数据类型

import argparse

#实例化,description添加描述脚本作用,会在输入-h后,打印出来
parser = argparse.ArgumentParser(description='命令行中传入一个数字:')
#type是要传入的参数的数据类型,help是该参数的提示信息
parser.add_argument('integers',type=str,help='传入的数字')
#解析传入参数
args = parser.parse_args()
print(args)

在cmd窗口当前py路径下执行python demo.py -h

会打印出使用的例子,脚本描述,以及参数描述等信息

在cmd窗口当前py路径下执行python demo.py 2

输出结果

Namespace(integers='2')

输出结果是是一种类似于python字典的数据类型

但可以使用arg.参数名来提取对应参数值

print(args.integers)
#输出结果2

 

nargs参数

nargs是用来说明传入的参数个数,'+' 表示传入至少一个参数

parser.add_argument('integers',nargs='+',type=str,help='传入的数字')

我们重新在cmd窗口执行命令,来传入4个数字是什么效果

 

 

 可以执行完成后,返回的是一个列表,integers这个参数接收了4个数值

 

type参数

设置传入参数的数据类型。我们看到代码中有type这个关键词,该关键词可以传入list, str, tuple, set, dict等

把上面的type=str,改成type=int,这时候我们就可以进行四则运算

import argparse

parser = argparse.ArgumentParser(description='命令行中传入一个数字:')
parser.add_argument('integers',nargs='+',type=int,help='传入的数字')
args = parser.parse_args()
print(f'总和:{sum(args.integers)}')

重新输入python demo.py 1 2 3 4,可以看到已经返回4个数值的相加总和

 

 

位置参数

在命令行中传入参数时候,传入的参数的先后顺序不同,运行结果往往会不同,这是因为采用了位置参数,例如

import argparse

parser = argparse.ArgumentParser(description='姓名')
parser.add_argument('p1',type=str,help='姓')
parser.add_argument('p2',type=str,help='名')
args = parser.parse_args()
print(args.p1+args.p2)

分别输入python demo2.py 张 三和python demo2.py 三 张,打印的情况不一样,参数关系代码从小到下的参数顺序对应运行命令从左到右顺序,输出如下

 

 

可选参数

为了解决以上的麻烦,可以使用可选参数,只需要在参数前面加上--即可

parser.add_argument('--p1',type=str,help='姓')
parser.add_argument('--p2',type=str,help='名')

输入命令python demo2.py --p2 三 --p1 张 和 python demo2.py --p1 张 --p2 三 

可以看到参数与输入的值都对应上

 可选参数不止可以加一个,可以加多个来使用(怎么方便怎么来,但获取参数名还是以--后面跟的为准)

import argparse

parser = argparse.ArgumentParser(description='姓名')
parser.add_argument('--p1','-pp1',type=str,help='姓')
parser.add_argument('--p2','-pp2',type=str,help='名')
args = parser.parse_args()
print(args.p1+args.p2)

输入python demo2.py -pp2 三 -pp1 张

仍可以正常接收到输入的值

 

 

default默认值

有时候某个参数传入的值会保持不变,但如果每次执行都需要敲命令,会非常麻烦,那么可以加上default属性,后面跟所需要的传入的值就可以,

同时将所有参数都设上default,调试起来也会非常方便。运行跟平常运行py脚本一样

parser.add_argument('--p1','-pp1',type=str,help='姓',default='李')
parser.add_argument('--p2','-pp2',type=str,help='名',default='四')

命令输入python demo2.py

后面不需要跟任何参数,可以直接打印获取到值

 

 

 required必需参数

 required可以设置该参数是否必需

下面我们跟参数--p1加上required必需参数

import argparse

parser = argparse.ArgumentParser(description='姓名')
parser.add_argument('--p1','-pp1',type=str,help='姓',default='李',required=True)
parser.add_argument('--p2','-pp2',type=str,help='名',default='四')
args = parser.parse_args()
print(args.p1+args.p2)

 

 哪怕存在default默认值,只要加了required必需参数,那么执行的时候,必须跟着此关键参数名称,如果没有包含,则会出现error提示,哪个参数是必须输入的

 输入python demo2.py

 

可以看到,上面打印必须要输入--p1/-pp1参数

当将--p1参数的值输入,可以看到,能够正常打印出值

 

 注意:required只有前面参数是可选参数,才能添加,如果是位置参数,加了required同样会造成报错

 

以上就是argparse一些简单的使用方法,能够满足大多数的需求

 

参考:https://zhuanlan.zhihu.com/p/56922793

 

标签:argparse,parser,Python,args,--,参数,命令行,type
来源: https://www.cnblogs.com/trystudy/p/16672608.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有