Python(2)-argparse模块常用模式

匿名 (未验证) 提交于 2019-12-02 22:51:30

1基本函数

argparse是Python中用于命令行中进行参数解析的一个模块,可以自动生成help和usage信息;当从终端输入的参数无效时,模块会输出提示信息。
Argparse常用的三个函数:

parser=Argparse.ArgumentParser()

ArgumentParser()用于创建一个ArgumentParser对象parser,parser保存了所有必要信息,用于将“从命令行中读入的参数”解析为对应的python数据类型。

parser.add_argument()

用于给parser添加需要读取数据的信息,这些信息告诉parser解析读入参数的方法

args = parser.parse_args()

用于解析parser保存的参数,返回一个命名空间
在实际python脚本中parse_args()一般不使用参数,它的参数由sys.argv确定。

2例子程序演示

将下列代码存成.py文件,在终端中运行。

import argparse parser=argparse.ArgumentParser(description="process some integer.") parser.add_argument('integers',metavar='N',type=int,nargs='+',help='an integer for accumulator') parser.add_argument('--sum',dest='accumulate',action='store_const',const=sum,default=max,                     help='sum the integers (default:find the max)' args=parser.parse_args() print(args.accumulate(args.integers)) 


上面程序实现了,默认求最大,可选求和的功能,结合上面程序,讲解三个函数中常用的选项含义:

3常用参数解释

parser=argparse.ArgumentParser(description=“process some integer.”)

1.1description,用于简要介绍程序的功能和工作原理。在帮助消息中,说明显示在 命令行‘用法’字符串各种参数的帮助消息之间。

1.2prog,用于显示“程序文件名”,默认为“运行文件名”
1.3usage,程序使用说明。当使用了 usage 的参数之后,会覆盖覆盖了 prog 参数里面的值。

parser.add_argument(‘integers’,metavar=‘N’,type=int,nargs=’+’,help=‘an integer for accumulator’)

ArgumentParser.add_argument(name or flags…[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

2.1 name,用于保存输入变量
2.2 action=‘store_const’ 存储由const关键字参数指定的值。
2.3 nargs单个命令行参数与要执行的单个操作相关联
2.4 default值是一个字符串,则解析器会将该值解析为一个命令行参数,变量的默认输入
2.5 type 指定变量的类型
2.6 nargs=’+’.’+‘和’*'一样,出现的所有命令行参数都被收集到一个列表中。
2.7 当ArgumentParser生成帮助信息时, 默认情况下使用dest的值作为每个对象的“名字”。
2.8 metavar会改变显示出来的名字 - parse_args() 对象中属性的名字仍然由dest的值决定。

args=parser.parse_args()

调用 parse_args() 将返回一个具有两个属性的对象, integers 和 accumulate 。

print(args.accumulate(args.integers))

累和的语句实现,默认对输入的数据进行球最大,如果解析到sum的参数,那么求和

4argparse模块整理的缘起

在程序会见到最简单的形式,指定,参数类型,可选值,默认值,和帮助信息等,在运行程序的时候可以通过命令行输入用户制定的参数,否则使用默认参数。

更多内容可以详见以下两篇博文:
https://cloud.tencent.com/developer/section/1370514
https://www.cnblogs.com/piperck/p/8446580.html

文章来源: https://blog.csdn.net/sinat_40624829/article/details/92001693
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!