构建argparse
模块主要分为四步:
导入argparse模块
创建ArgumentParser对象:ArgumentParser对象包含将命令行解析成python数据类型所需的全部信息
添加参数:给上述创建的对象添加参数,调用add_argument()方法
解析参数:将上述添加的参数进行解析,调用parse_args()方法
import argparse
parse =argparse.ArgumentParser()
parse.add_argument('number',help="请输入数字",type=int) #指定参数必须是整型
parse.add_argument("str",help='请输入字符串',type=str) #指定参数必须是字符串类型
args=parse.parse_args()
print(args)#返回字典
print(args.number)
print(args.str)
add_argument()
方法该方法用于指定程序将能接受哪些命令行选项
type
参数指定数据类型parser = argparse.ArgumentParser()
parser.add_argument('--info',help='increase output info')
args = parser.parse_args()
if args.info:
print("info turned on")
--info
选项时显示某些东西,否则不显示。args.info
,将被赋值为 None
,这也就是它在 if
语句中无法通过真值检测的原因。--info
选项时,必须指定一个值,但可以是任何值。action是一种新的赋值方式,主要决定参数为True or False
action=‘store_true’,在运行时指定了该参数他就为True
action=‘store_false’,就是flase
parser = argparse.ArgumentParser()
parser.add_argument('--info',help='increase output info',action='store_true')
args = parser.parse_args()
if args.info:
print("info turned on")
action
,并将其赋值为 "store_true"
。 这意味着,如果指定了该选项,则将值 True
赋给 args.verbose
。 如未指定则表示其值为 False
。import math
import argparse
parser = argparse.ArgumentParser(description="计算圆柱体的体积")#描述解析对象
parser.add_argument('-R','--radius',type = int,help = '半径')
parser.add_argument('-H','--height',type = int,help = '高')
args = parser.parse_args()
def cylinder_volume(radius,height):
vol = (math.pi)*(radius**2)*(height)
return vol
if __name__ == '__main__':
print(cylinder_volume(args.radius,args.height))
from termcolor import cprint,colored
import argparse
parser=argparse.ArgumentParser(description="计算一个数字的平方")
parser.add_argument('num',help="给一个数字",type= int)
parser.add_argument('--bool',action="store_true",help="increase output bool")
args = parser.parse_args()
answer=args.num**2
if args.bool:
print(colored(f"{args.num}的平方等于{answer}",color='red',on_color='on_white'))
else:
print(answer)
from termcolor import cprint,colored
import argparse
parser=argparse.ArgumentParser(description="计算一个数字的平方")
parser.add_argument('num',help="给一个数字",type= int)
parser.add_argument('-b','--bool',type=int,help="increase output bool",choices=[0,1,2,3,4])
args = parser.parse_args()
answer=args.num**2
if args.bool==3:
print(colored(f"{args.num}的平方等于{answer}",color='red',on_color='on_white'))
elif args.bool ==1:
print(colored(f"{args.num}^2 == {answer}",color='green'))
else:
print(answer)
引入了另一种动作 “count
”,来统计特定选项
出现的次数
from termcolor import cprint,colored
import argparse
parser=argparse.ArgumentParser(description="计算一个数字的平方")
parser.add_argument('num',help="给一个数字",type= int)
parser.add_argument('-b','--bool',help="increase output bool",action="count")
args = parser.parse_args()
answer=args.num**2
if args.bool==3:
print(colored(f"{args.num}的平方等于{answer}",color='red',on_color='on_white'))
elif args.bool ==1:
print(colored(f"{args.num}^2 == {answer}",color='green'))
else:
print(answer)
-b
标志,这一标志的值会是 None
解决上述报错,需要加入一个参数default
,设置默认值
from termcolor import cprint,colored
import argparse
parser=argparse.ArgumentParser(description="计算一个数字的平方")
parser.add_argument('num',help="给一个数字",type= int)
parser.add_argument('-b','--bool',help="increase output bool",action="count",default=0)
args = parser.parse_args()
answer=args.num**2
if args.bool >=3:
print(colored(f"{args.num}的平方等于{answer}",color='red',on_color='on_white'))
elif args.bool >=1:
print(colored(f"{args.num}^2 == {answer}",color='green'))
else:
print(answer)
None
,并且它不能和整数值相比较(所以产生了 TypeError
异常)import argparse
parser = argparse.ArgumentParser()
parser.add_argument("x", type=int, help="the base")
parser.add_argument("y", type=int, help="the exponent")
parser.add_argument("-v", "--verbosity", action="count", default=0)
args = parser.parse_args()
answer = args.x**args.y
if args.verbosity >= 2:
print(f"Running '{__file__}'")
if args.verbosity >= 1:
print(f"{args.x}^{args.y} == ", end="")
print(answer)