最近工作中有用到这个模块,确实很好用,在此总结下,已方便查询使用:
import argparse
def fun1():
print('fun1')
def fun2():
print('fun2')
print(vars(args))
if __name__ == '__main__':
parser=argparse.ArgumentParser()
sub_parse=parser.add_subparsers()
fun1_p=sub_parse.add_parser('fun1')
fun1_p.set_defaults(function=fun1)
p2=sub_parse.add_parser('fun2')
p2.add_argument('--first','-f',type=int)
p2.add_argument('--second','-s',type=int)
p2.set_defaults(function=fun2)
args=parser.parse_args()
print(vars(args))
args.function()
import argparse
import sys
class Args():
def __init__(self,list):
self.parse_list=list
self.parse_dict=get_arg_parse(self.parse_list)
def sum_fun(self):
sum=0
for i in self.parse_dict.sum_fun:
sum+=int(i)
print('sum=',sum)
def jiecheng(self):
ji=1
for i in range(2,int(self.parse_dict.jiecheng[0])+1):
ji *= i
print('{}! = {}'.format(self.parse_dict.jiecheng[0],ji))
def get_arg_parse(a):
parse=argparse.ArgumentParser()
parse.add_argument('-sum_fun',nargs="+")
parse.add_argument('-jiecheng',nargs=1)
args=parse.parse_args(a)
return args
if __name__ == '__main__':
a=sys.argv[1:]
b=Args(a)
print(vars(get_arg_parse(a)))
for k,v in vars(get_arg_parse(a)).items():
if k and v:
eval('b.{}()'.format(k))
有什么不对的地方,欢迎大家吐槽指正。