1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python命令行参数解析模块------argparse

Python命令行参数解析模块------argparse

时间:2020-03-07 02:47:57

相关推荐

Python命令行参数解析模块------argparse

首先,argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当你的代码需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离开来,让你的代码更简洁,适用范围更广。

如果脚本很简单或临时使用,没有多个复杂的参数选项,可以直接利用sys.argv将脚本后的参数依次读取(读进来的默认是字符串格式)。比如如下名为test.py的脚本:

import sysprint ('Input argument[0] is %s and argument[1] is %s' %(sys.argv[0],sys.argv[1]))

在shell脚本中运行python test.py help可以得到 :Input argument[0] is test.py and argument[1] is help

但是大多数情况下,脚本很可能需要多个参数,而且每次参数的类型用处各不相同,那么这个时候在参数前添加标签表明参数的类型和用途便十分有用,而利用argparse模块可以很方便得实现这一目的。

有代码如下:

import argparse# description参数可以用于插入描述脚本用途的信息,可以为空parser = argparse.ArgumentParser(description="your script description")# 添加--verbose标签,标签别名可以为-v,这里action的意思是当读取的参数中出现--verbose/-v的时候# 参数字典的verbose建对应的值为True,而help参数用于描述--verbose参数的用途或意义。parser.add_argument('--verbose', '-v', action='store_true',help='verbose mode')args = parser.parse_args() # 将变量以标签-值的字典形式存入args字典if args.verbose:print("Verbose mode on!")else:print("Verbose mode off!")

运行 python test.py:

若后面跟了 --verbose/-v 的时候会输出 :Verbose mode on!

如果什么都没有会输出 : Verbose mode off!

如果输入了 --verbose/-v 以外的参数则会报错:unrecognized arguments

其中,–help 标签在使用argparse模块时会自动创建,因此一般情况不需要我们主动定义帮助信息。

对于命令行参数,有几个要点:

1)必须参数:这种模式用于确保某些必需的参数有输入。

parser.add_argument('--verbose', required=True, type=int)

required标签就是说–verbose参数是必需的,并且类型为int,输入别的类型会报错。

2)位置参数(positional arguments)

位置参数与sys.argv调用比较像,参数没有显式的–xxx或者-xxx标签,因此调用属性也与sys.argv相同。

parser.add_argument('filename') # 输入的第一个参数赋予名为filename的键args = parser.parse_args()print ("Read in %s" %(args.filename))

输入 python test.py test.txt 则会输出 Read in test.txt。

此外,可以用nargs参数来限定输入的位置参数的个数,默认为1。当然nargs参数也可用于普通带标签的参数。

parser.add_argument('num', nargs=2, type=int)

表示脚本可以读入两个整数赋予num键(此时的值为2个整数的数组)。nargs还可以 ‘*’ 用来表示如果有该位置参数输入的话,之后所有的输入都将作为该位置参数的值,即 0 到多个;‘+’ 表示读取至少1个该位置参数。’?’ 表示该位置参数要么没有,要么就只要一个。(PS:跟正则表达式的符号用途一致。)

parser.add_argument('filename')parser.add_argument('num', nargs='*)args = parser.parse_args()print ("Read in %s --- %s" %(args.filename,args.num))

就可以运行 python test.py text.txt 1 2

输出为: Read in test.txt — [‘1’, ‘2’]

3)输入类型

之前已经提到了用type参数就可以指定输入的参数类型。而这个type类型还可以表示文件操作的类型从而直接进行文件的读写操作。

parser.add_argument('file', type=argparser.FileType('r')) # 读取文件args = parser.parse_args()for line in args.file:print line.strip()

4)参数默认值

一般情况下会设置一些默认参数从而不需要每次输入某些不需要变动的参数,利用default参数即可实现。

parser.add_argument('filename', default='text.txt')

这个时候至直接运行python text.py就能得到Read in text.txt而不需要输入文件名了。

5)候选参数选择

表示该参数能接受的值只能来自某几个值候选值中,除此以外会报错,用choices参数即可。比如:

parser.add_argument('filename', choices=['test1.txt', 'text2.txt'])

文章内容来自:/article/133524.htm

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。