import argparse # 引入模块
# 建立解析对象
parser = argparse.ArgumentParser()
parser.add_argument("echo") # xx.add_argument("aa")
# 给xx实例增加一个aa属性
# 把parser中设置的所有"add_argument"给返回到args子类实例当中
# 那么parser中增加的属性内容都会在args实例中,使用即可。
args = parser.parse_args()
parser.parse_args()
print(arg.echo) # 打印定位参数echo
运行的话,在python argp.py后面加上abcd(任意);
其将输出“abcd”。因为我们把abcd赋给了args.echo了。
给其设置help:
parser.add_argument("echo",help="echo is here")
在命令行中输入:
python argp.py -h
就可以得打相关的帮助信息
假设我们写一个文件,在命令行将其编译时,同时输入一个数字,返回一个平方:
因为parse.add_argument()对于接受的值默认其为str,如果要将之视为int类型,额外加一句“type=int”。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", help = "To sqaure the number given", type = int)
# 在命令行中,该py文件希望用户能给他一个参数,最终将之转化为:args.square
args = parser.parse_arg()
print(args.square**2)
有了type程序也可以自动过滤掉相关的不符合类型的参数输入。
在add_argument前,给属性名之前加上“—”,就能将之变为可选参数。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--bool",help = "Whether to pirnt sth.")
# 这里的bool是一个可选参数,返回给args的是 args.bool
args = parser.parse_args()
if arg.bool:
print('bool = 1')
对于简单程序,我们可能只需要两种值TrueorFalse:输入
python argp.py --bool 1
既然是可选的,如果不指定(就是不使用它)的话,对应的变量会被设置为None。
对于简单程序,我们可能只需要两种值 True or False:
我们可以在原有的程序的基础上,在add_argument中多加一个参数:
action = "store_true"
这个时候,只要在命令行中加个bool,args.bool就是True了,无需再加上之后的赋值内容,加了反而会报错。
但是,如果在
parser.add_argument(..., required=True,type=int)
的话,那么这个参数就是必须的,因为他是required。
parser.add_argument(“-b”,“–bool”,action=“store_true”)
这样,在程序内部我们依旧使用args.bool
,但是在命令行当中我们只需要多写一个“-b”
就好了。
当我们使用多个parser.add_argument(…)的时候,若将之视为可选参数,无则为None。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-b","--bool",help="to show the ans in a sentencen form",action = "store_true")
parser.add_argument("square",type=int)
args = parser.parse_args()
ans = args.square**2
if args.bool:
print("the square of {} = {}".format(args.square,ans))
else:
print(ans)
# 得到的效果为:一旦输入“-b”然后再输入相关的参数,就可以得到我们需要的结果了,不输入“-b”我们还是可以得到结果,只不过是另外一种方式而已
限制输入的值:进一步,我们可以进行以下操作,或者对之进行一些了解:
parser.add_argument("-b","--bool",choices=[0,1],help="you can only input 0 or 1.")
其中,choice
可以限定我们能够输入的数。
add
,不可选参数放前面add
。python xx.py x y
,这个时候,args.a=x ; args.b=y。光上面那点知识,怕是根本算不上炫酷。我们肯定需要更牛逼的办法。
import argparse
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()
group.add_argument("-f","--form",action="store_true")
group.add_argument("-F","--Form",action="store_true")
parser.add_argument("x",type = float)
parser.add_argument("y",type = float)
args = parser.parse_args()
ans = args.x**args.y
if args.form:
print("{} to the power {} equals {}".format(args.x, args.y, ans))
elif args.Form:
print("{}^{} = {}".format(args.x,args.y,ans))
else:
print(ans)
注意点:帮助信息中若有“[a | b]”就意味着,ab不可以同时使用。
参考链接:https://www.cnblogs.com/still-smile/p/11636958.html