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()

在命令行加-h--help参数运行该命令,可以获取帮助信息,结果如下

$ python test.py --help
usage: test.py [-h] [-n NAME]

Demo of argparse

optional arguments:
  -h, --help            show this help message and exit
  -n NAME, --name NAME  Enter the name

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')

以上就是对argparse使用的简单总结,愿你有所收获。

参考

https://docs.python.org/3/library/argparse.html