python3通过命令⾏往程序⾥输⼊参数(argparse标准库)1. 定义
argparse是python标准库⾥⾯⽤来处理命令⾏参数的库,通过在程序中定义好我们需要的参数,argparse 将会从 sys.argv 中解析出这些参数,并⾃动⽣成帮助和使⽤信息。
2. 命令⾏参数分为位置参数和选项参数
位置参数就是程序根据该参数出现的位置来确定的
如:[root@openstack_1 /]# ls root/ #其中root/是位置参数
选项参数是应⽤程序已经提前定义好的参数,不是随意指定的
如:[root@openstack_1 /]# ls -l # -l 就是ls命令⾥的⼀个选项参数
3. 使⽤步骤:
(1)import argparse ⾸先导⼊模块
(2)parser = argparse.ArgumentParser() 创建⼀个解析对象
(3)parser.add_argument() 向该对象中添加你要关注的命令⾏参数和选项
(4)parser.parse_args() 进⾏解析
4. argparse.ArgumentParser()⽅法参数须知:
(⼀般我们只选择⽤description)
prog=None - 程序名
description=None, - help时显⽰的开始⽂字
epilog=None, - help时显⽰的结尾⽂字
parents=[], -若与其他参数的⼀些内容⼀样,可以继承
formatter_class=argparse.HelpFormatter, - ⾃定义帮助信息的格式
prefix_chars=’-’, - 命令的前缀,默认是‘-’
fromfile_prefix_chars=None, - 命令⾏参数从⽂件中读取
argument_default=None, - 设置⼀个全局的选项缺省值,⼀般每个选项单独设置
conflict_handler=‘error’, - 定义两个add_argument中添加的选项名字发⽣冲突时怎么处理,默认处理是抛出异常
add_help=True - 是否增加-h/–help选项,默认是True)
5. add_argument()⽅法参数须知:
(1)name or flags… - 必选,指定参数的形式,⼀般写两个,⼀个短参数,⼀个长参数
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('echo') # add_argument()指定程序可以接受的命令⾏选项
args = parser.parse_args() # parse_args()从指定的选项中返回⼀些数据
print(args)
ho)
然后在命令⾏运⾏输⼊(⽂件名为demo1.py):
python demo1.py foo
即在命令⾏运⾏demo1.py,并给程序输⼊foo。
结果为:
python怎么读取py文件Namespace(echo='foo')
foo
也就是说我们给程序输⼊的foo赋值给了echo这个属性,⽽echo这个属性是属于parser这个对象的。
(2)
action: 表⽰值赋予键的⽅式,这⾥⽤到的是bool类型,action意思是当读取的参数中出现指定参数的时候的⾏为help: 可以写帮助信息
parser = argparse.ArgumentParser(description = 'this is a description')
parser.add_argument('--ver', '-v', action = 'store_true', help = 'hahaha')
# 将变量以标签-值的字典形式存⼊args字典
args = parser.parse_args()
if args.ver:
print("Ture")
else:
print("False")
在命令⾏输⼊:
python demo1.py -v
或者输⼊:
python demo1.py --ver #(这⾥--ver和-v是等价的,就像--help和-h是等价的⼀样)
结果为:
True
这段代码的意思是只要在命令⾏输⼊--ver或者-v则args.ver==True。
(3)
required:必需参数,通常-f这样的选项是可选的,但是如果required=True那么就是必须的了
type : 指定参数类型
parser = argparse.ArgumentParser(description = 'this is a description')
# required标签就是说--ver参数是必需的,并且类型为int,输⼊其它类型会报错
parser.add_argument('--ver', '-v', required = True, type = int)
args = parser.parse_args()
print(args.ver)
if args.ver:
print("Ture")
else:
print("False")
在命令⾏输⼊:
python demo1.py -v 1
这⾥表⽰给ver赋值1
输出:
1
True
(4)
choices - 设置参数的范围,如果choice中的类型不是字符串,要指定type表⽰该参数能接受的值只能来⾃某⼏个值候选值中,除此之外会报错,⽤choice参数即可
parser.add_argument('file', choices = ['test1', 'test2'])
args = parser.parse_args()
print('read in %s'%(args.file))
在命令⾏输⼊:
python demo1.py test1
输出:
read in test1
(5)
nargs - 指定这个参数后⾯的value有多少个,默认为1
# 表⽰脚本可以读⼊两个整数赋予num键(此时的值为2个整数的数组)
parser.add_argument('filename', nargs = 2, type = int)
args = parser.parse_args()
print('read in %s'%(args.filename))
在命令⾏输⼊:
python demo1.py 1 2 3
输出:
usage: demo1.py [-h] filename filename
demo1.py: error: unrecognized arguments: 3
分析:nargs还可以’*‘⽤来表⽰如果有该位置参数输⼊的话,之后所有的输⼊都将作为该位置参数的值;‘+’表⽰读取⾄少1个该位置参数。’?'表⽰该位置参数要么没有,要么就只要⼀个。(PS:跟正则表达式的符号⽤途⼀致。
如:
parser.add_argument('filename', nargs = '+', type = int)
args = parser.parse_args()
print('read in %s'%(args.filename))
(6)
dest - 设置这个选项的value解析出来后放到哪个属性中
parser.add_argument('-file', choices = ['test1', 'test2'], dest = 'world')
args = parser.parse_args()
print('read in %s'%(args.world))
在命令⾏输⼊:
python demo1.py -file test1输出:
read in test1
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论