python包 argparse简单使用辨析

1. 简单介绍

   argparse 模块可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数,然后 argparse 将弄清如何从 sys.argv 解析出那些参数。 argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。
摘自python官方文档
   简单来说就是,当需要python文件的运行需要用到命令行运行的时候,需要从命令行中接收文件运行所需参数的时候,调用argparse库编写程序能够提供很好的命令行接口,方便程序从命令行中接收参数,并且能够在无法成功启动的时候提供各类报错信息。

2. 简单使用模板及语法辨析

2.1 必须掌握的类和方法或函数

class argparse.ArgumentParser()。要从命令行处接收参数之前必须声明一个ArgumentParse对象。ArgumentParse对象创建时可以接收若干参数,最常用的有description参数,它的存储的内容是需要显示的帮助文本。还有prog参数,它表示程序的名字。
add_argument()。该方法定义需要从命令行中具体接收什么参数,它的函数原型如下:
ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
   这里面有几个必须掌握的参数:1°name or flags - 要么是一个位置参数,要么是一个可供选择的参数,这个参数在后面举例子说明。
   action - 指定在接收参数之后要做的动作。默认的动作是'store',表示存储参数的值。还有两个要提到的动作分别是'store_true''store_false',当关联这两个动作之后,该参数就只能存储TrueFalse'store_true'表示只要该参数接收了任何信息,都把该参数的值设置为True,而'store_false'则相反,有信息进来则设置为False。这两个动作的默认值分别为FalseTrue,即如果没有任何信息进来,则分别设置为FalseTrue
   default - 为参数设置默认值。当命令行中没有传入相应的值,则设置默认值。默认值为None
   type - 为参数接收的值设置类型。默认情况下,解析器会将命令行参数当作简单字符串读入,而设置了type参数之后就会被解读成其他类型,如floatint。不建议使用复杂的类型转换。
   choices - 为参数接收的值设置一系列限定的值,参数只能从这些值中选择。字面意思。
   required - 当参数是可选,但是又必须要求输入的时候,可以把该参数设置为True,表示一定要输入。若设置为True后又没有输入,则会报错。
   help - 包含参数简短描述的字符串。 当用户请求帮助时(一般是通过在命令行中使用 -h 或 --help 的方式),这些 help 描述将随每个参数一同显示。
parse_args()方法。原型如下:
ArgumentParser.parse_args(args=None, namespace=None) 将参数字符串转换为对象并将其设为命名空间的属性。返回带有成员的命名空间。args - 要解析的字符串,通过对传入的这串字符串进行解析,就能获得对应位置参数或选项的值。默认值是从sys.argv获取,只要知道命令行参数会被包含在这里面。

2.2 简单使用模板

文件test.py

import argparse

def parse():
'''该函数主要工作是从调用argparse库中的接口从命令行中接收字符串并解析。
'''
	# 1. 创建一个默认的参数解析类
	parser = argparse.ArgumentParser(prog='template', description='argparse simple template') # description参数-显示的帮助文本
	# 2. 添加要从命令行中接收的参数
	parser.add_argument('arg1', type=int)
	parser.add_argument('-arg2', type=float)
	parser.add_argument('--arg3')
	# 3. 解析
	args = parser.parse.args()
	# 4. 返回命名空间
	return args

def main():
	args = parse()
	# 可以使用 .运算符对参数进行索引
	print(args)
	
	# do something

if __name__ == '__main__':
	main() # 调用主函数

当在命令行中输入如下命令:

pyhton test.py arg1 1 -arg2 2 --arg3 3

则会有以下输出:

Namespace(arg1=1, arg2=2, arg3=3)

这里需要注意的是,在调用add_argument()方法添加参数的时候,一共设置了三个要解析的参数,分别为arg1,arg2和arg3。要注意的是:arg1是没有添加单划线(-)或双划线(–),这表明了该参数是位置参数,是必须输入的。位置参数与python函数的参数的位置参数定义一样。不用显式使用参数名,可以根据位置来对应录入。所以也可以把上述的命令行输入改为如下形式:

python test.py 1 -arg2 2 --arg3 3

输出是跟上面的一样。
而另外两个参数arg2arg3,一个是带单划线一个是带双划线的,这表明了它们都是可选参数,当没有设置required参数的时候它们不是必需的。当带上单划线或双划线,在命令行输入时必须显式使用参数名,同时还是相应带上单划线或双划线。如上述命令行输入所示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值