argparse 用法总结

add_argument

# 这是最基础的参数格式,如果是这样的格式,说明pkg是一个必须的参数,如果不加入这样的参数,则会报错。参数必须以‘-’开始。
parse.add_argument('-pkg', help='help')

ArgumentParser

# 导入命令行解析的库文件
import argparse  
# 为了别人执行代码的时候用--help看出来怎么使用这些代码
parse = argparse.ArgumentParser(description="test!!")  
# 这句也是要的,如果没这个, python test.py --help 没有信息
args = parse.parse_args()

以上两句是必须的,下面是根据你的代码需要添加的参数命令行:

nargs

# 如果没有nargs, 则执行代码的时候必须加上这个参数
# 如果有nargs说明这个参数可带可不带
parse.add_argument('need_or_not', help='need_or_not', nargs='?') 			
# 获取实际输入的参数
args = parse.parse_args()											
args = parse.parse_args()
parse.add_argument('-a', '--abc', help='a sourcedir', nargs='?')
print(args.abc)
#是错误的
print(args.a)
#运行时使用python demo.py -a abc
#或者使用python demo.py --abc abc(使用的是两个短横)
#说明添加的参数可以用-a 或者 --abc。但是解析的时候必须用全称。

action

有些参数可以不加上的时候默认的值是bool变量。

# 这里的参数action的作用标明如果不写参数的话默认的print(args.abc)的值是false,
# 但是如果加上参数的话默认的print(args.abc)的值 为true
# 其中运行的参数的值不需要加上,直接  python test.py --abc 
parse.add_argument('-a', '--abc', help='a sourcedir', action='store_true') 

default

上面的情况是默认为bool类型变量的0,当然也可以设置为自己想要的默认值。

parse.add_argument('-a','--abc',help='a sourcedir',action='store_true', default=3) 
# 这时如果加上default的关键字,如果加上--abc参数的话为则参数的值True
# 但如果不加则采用默认的3,不再是0 

add_mutually_exclusive_group

添加互斥的参数组,因为有些参数的使用是不能同时出现的:

# 必须先要定义一个互斥的参数组
group = parse.add_mutually_exclusive_group() 
group.add_argument('-a','--abc',help='a sourceaaa',action='store_true')
group.add_argument('-b','--bc',help='a sourceabb',action='store_true')

#-a  -b的参数只能加上一个无论在互斥组内有多少的参数,都只能出现一个。也可以都不加。
# python test.py -a

dest

# 这时参数的全名为abc,但是如果出现dest关键字,则全程为dest关键字定义的字
parse.add_argument('-a','--abc', dest='mn', help='a sourcedir', nargs='?') 
# 这时无论全名是mn,不再是abc
print(args.mn)
# 执行的时候正常
# python test.py --abc 123

sys.argv[]

python 中默认的sys.argv[]会自动保存运行python代码时的参数,如果参数为一个就保存在sys.argv[1]中,多的会依次向下存:

import sys
print(sys.argv[0])
print(sys.argv[1])
print(sys.argv[2])
print(sys.argv[3])

# python test.py --abc 123 -a 789
# >>>  test.py --abc 123 -a 789

https://blog.csdn.net/yuyushikuan/article/details/79729660

你可能感兴趣的:(Python)