argparse使用方法简单总结
argparse是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当你的代码需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离开来,让你的代码更简洁,适用范围更广。
argparse的使用方法比较简单,下面使用python3为例,逐步讲解它的使用方法。
1.基本方法
import argparse def main(): parser = argparse.ArgumentParser(description="Demo of argparse") parser.add_argument('-n','--name', default=' Li ') args = parser.parse_args() print(args) name = args.name print('Hello {}'.format(name)) if __name__ == '__main__': main()
上面的函数就是实现argparse功能的基本的框架。首先我们要导入argparse相关的包,然后通过argparse.ArgumentParser生成对象,description是在命令行模式时显示帮助信息。之后我们通过parser.add_argument向该对象中添加你要关注的命令行参数和选项。我们通过加入了–name这个参数,default表示没有参数传输进来的时候我们默认使用"Li"。最后我们使用parser.parse_args进行解析。
在命令行执行语法及输出结果
$ python test.py Namespace(name=' Li ') Hello Li
我们也可以直接给参数赋值
$ python test.py --name YA Namespace(name='YA') Hello YA
上面就是argparse使用的基本流程,下面我将介绍一下add_argument常用的基本参数,以方便我们的具体使用和理解
2. default
当我们没有输入参数的时候,就传入default的默认参数。
3. help
帮助值是一个字符串,包含参数的简短描述。当用户请求帮助时(通常在命令行使用-h
或--help
),这些帮助描述将与每个参数一起显示。
import argparse def main(): parser = argparse.ArgumentParser(description="Demo of argparse") parser.add_argument('-n','--name', default=' Li ',help="Enter the name") args = parser.parse_args() print(args) name = args.name print('Hello {}'.format(name)) if __name__ == '__main__': main()
4. type
默认情况下,ArgumentParser对象以简单字符串的形式读取命令行参数。然而,通常命令行字符串应该被解释为另一种类型,比如float或int。add_argument()的type关键字参数允许执行任何必要的类型检查和类型转换。下面我们以打印A+B(A=2,B=5,type = float)方式来说明:
import argparse def main(): parpse = argparse.ArgumentParser(description="Demo of arfparse") parpse.add_argument("-A",default = "2",type = float) parpse.add_argument("-B",default = "5",type = float) args = parpse.parse_args() print("A+B:{} + {} = ".format(args.A,args.B),args.A + args.B) if __name__ == '__main__': main()
结果为
$ python test.py A+B:2.0 + 5.0 = 7.0
5. dest
大多数ArgumentParser操作都添加一些值作为parse_args()
返回的对象的属性。此属性的名称由add_argument()
的dest关键字参数决定。对于位置参数操作,dest
通常作为add_argument()
的第一个参数,也就是-或者–后面的第一个参数,也可以用dest=
去定义。一个官网的例子
import argparse def main(): parser = argparse.ArgumentParser(description="Demo of arfparse") parser.add_argument('--foo', dest='bar') return parser if __name__ == '__main__': print(main().parse_args('--foo XXX'.split()))
结果过为
$ python test.py Namespace(bar='XXX')