Python argparse模块实现解析命令行参数方法详解

 更新时间:2022年09月22日 15:10:47   作者:fengbingchun  
argparse 是 python 自带的命令行参数解析包,可以用来方便的服务命令行参数。本文将通过示例和大家详细讲讲argparse的使用,需要的可以参考一下

argparse是Python的一个标准模块,用于解析命令行参数,即解析sys.argv中定义的参数。实现在:传送门

argparse模块还会自动生成帮助和使用信息,即在最后加-h或--help。当用户输入的参数无效时,会触发error,并给出出错原因。

python test_argparse.py -h
python test_argparse.py --help

使用argparse的步骤:

1.创建解析器:argparse.ArgumentParser(),ArgumentParser是个class,构造它时有很多参数可以指定,若不指定这些参数都使用默认值,如description=None:此python程序功能的描述;add_help=True:添加-h/--help选项

parser = argparse.ArgumentParser(description="test argparse's use", add_help=True)

2.添加参数:parser.add_argument(*args, **kwargs):*args允许函数接受任意数量的位置参数(positional arguments),**kwargs允许函数接受任意数量的关键字参数。Python不允许位置参数跟在关键字参数之后。

(1).name or flags:一个名字,位置参数(positional arguments),不带有"-"或"--",如foo;一个可选字符串的列表,如-f, --foo。当parse_args()被调用时,可选参数会以"-"前缀识别,剩下的参数则会被假定为位置参数。

parser.add_argument("integers", metavar="N", type=int, nargs="+", help="an integer for the accumulator") # positional argument
parser.add_argument("--sum", dest="accumulate", action="store_const", const=sum, default=max, help="sum the integers(default: find the max)") # optional argument
args = parser.parse_args()
print(args.accumulate(args.integers)) # print either the sum or the max of the command-line integers

(2).action:ArgumentParser对象将命令行参数与action相关联。这些action可以做与它们相关联的命令行参数的任何事,尽管大多数action只是简单的向parse_args()返回的对象上添加一个属性。action关键字参数指定应如何处理命令行参数。默认的action是"store",存储参数的值。

(3).nargs:此关键字参数将不同数量的命令行参数与单个操作相关联。

"?":如果不存在命令行参数,则会使用default值;还有一种情况,"-"选项字符串存在,但后面没有跟着命令行参数,则会使用const值。

"*":所有命令行参数都收集到一个列表中。

"+":与"*"类似,但至少存在一个命令行参数,否则会产生错误消息。

parser.add_argument('--foo', nargs='?', const='c', default='d')
args = parser.parse_args()
print(args.foo) # print 'c' or 'd' or command-line input

(4).const:此关键字参数用于保存不是从命令行中读取但被各种ArgumentParser操作所需的常量值。对'store_const'和'append_const' action,const关键字参数必须给出;对其它action,默认为None。

(5).default:此关键字参数用于在命令行参数不存在应使用的值,默认值为None。

(6).type:此关键字参数允许执行任何必要的类型检查和类型转换。

(7).choices:某些命令行参数应当从一组受限值中选择,这些可以通过将容器对象作为choices关键字参数传递给add_argument()来处理。当执行命令行解析时,参数值将被检查,如果参数不是可接受的值之一将触发错误消息。

parser.add_argument('addr', type=str, choices=['csdn', 'github'])
args = parser.parse_args()
print("addr:", args.addr)

(8).required:通常,argparse模块假定"-f"和"--bar"等标志表示可选参数,在命令行中始终可以省略这些参数。要让一个选项成为必需的,则可以将required关键字参数指定为True。

(9).help:包含参数简短描述的字符串。通常在命令行中使用-h或--help时,这些help描述将与每个参数一起显示。

(10).metavar:当ArgumentParser生成帮助消息时,它需要某种方式来引用每个预期的参数。默认情况下,ArgumentParser对象使用dest值作为每个对象的"name"。默认情况下,对于位置参数action,直接使用dest值,对于可选参数action,dest值是大写的。可以使用metavar来指定一个替代名称。

parser.add_argument('--foo')
parser.add_argument('--bar', metavar='XXX')
args = parser.parse_args()

(11).dest:大多数ArgumentParser操作都会添加一些值作为parse_args()返回的对象的一个属性。此属性的名称由add_argument()的dest关键字参数确定。

3.解析参数:parser.parse_args(),将参数字符串转换为对象并将其设为命名空间的属性,返回带有成员的命名空间。

更多介绍参考:传送门

GitHub

到此这篇关于Python argparse模块实现解析命令行参数方法详解的文章就介绍到这了,更多相关Python argparse模块 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python 一篇文章看懂Python集合与字典数据类型

    Python 一篇文章看懂Python集合与字典数据类型

    集合并不是一种数据处理类型,而是一种中间类型。集合(set)是一个无序、不重复的元素序列,经常被用来处理两个列表进行交并差的处理性。本文将详细讲解集合的一些常用方法,感兴趣的可以了解一下
    2022-03-03
  • 教你使用Python连接oracle

    教你使用Python连接oracle

    今天教各位小伙伴怎么用Python连接oracle,文中附带非常详细的图文示例,对正在学习的小伙伴们很有帮助哟,需要的朋友可以参考下
    2021-05-05
  • Python中运算符

    Python中运算符"=="和"is"的详解

    大家都知道python中有很多的运算符,今天我们就来深入的介绍is和==这两种运算符以及他们的区别,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-10-10
  • Python爬虫练习汇总

    Python爬虫练习汇总

    这篇文章主要给大家分享的是Python爬虫练习题,文章以爬取南阳理工OJ为题目,根据页面数据显示可以查看到只有题号、难度、标题、通过率、存有数据,因此只需要对此四项数据进行爬取,下面一起静茹文章查看具体的操作过程吧</P><P>
    2021-12-12
  • python logging模块书写日志以及日志分割详解

    python logging模块书写日志以及日志分割详解

    这篇文章主要为大家详细介绍了python logging模块书写日志的方法,并对日志进行分割,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)

    python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)

    这篇文章主要介绍了python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • python中的插值 scipy-interp的实现代码

    python中的插值 scipy-interp的实现代码

    这篇文章主要介绍了python中的插值 scipy-interp的实现代码,需要的朋友可以参考下
    2018-07-07
  • 你还在@微信官方?聊聊Python生成你想要的微信头像

    你还在@微信官方?聊聊Python生成你想要的微信头像

    这篇文章主要介绍了你还在@微信官方?我来教你用Python生成你想要的微信头像功能,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • pytorch 使用单个GPU与多个GPU进行训练与测试的方法

    pytorch 使用单个GPU与多个GPU进行训练与测试的方法

    今天小编就为大家分享一篇pytorch 使用单个GPU与多个GPU进行训练与测试的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • 深入解析Python小白学习【操作列表】

    深入解析Python小白学习【操作列表】

    这篇文章主要介绍了Python操作列表,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03

最新评论