如何使用Python对参数进行解析

如何使用Python对参数进行解析

通常情况下,在读取命令行的参数时,我用的就是sys库, 读取输入的参数进行处理

import sys
arg1 = sys.argv

由于很多脚本就我自己一个人用,所以这样写没啥问题。但是如果要给别人用,或者时间过得久远些,那么就得要把参数使用说明写的具体些,方便将来使用。

Python提供了argparse库,让我们更加容易的进行命令行参数解析。简略流程为,先用ArgumentParser创建参数解析对象ArgumentParser,再用add_argument()在解析对象里添加要解析的参数. 最后用parse_args()进行解析,返回参数所在的命名空间。如果涉及到子命令,则还需要add_subparsers

基础

让我们先用一个简单的例子了解下argparse的功能

#!/usr/bin/env python
# prog.py
import argparse

parser = argparse.ArgumentParser()
parser.parse_args()

以不同方式运行代码

$ python multi_pilon.py          
$ python multi_pilon.py --help   
usage: multi_pilon.py [-h]

optional arguments:
  -h, --help  show this help message and exit

$ python multi_pilon.py --verbose
usage: multi_pilon.py [-h]
multi_pilon.py: error: unrecognized arguments: --verbose

当我们不传递任何参数时,脚本不会输出任何信息;当我们用--help时,得到了脚本的一些使用说明;当我们传入其他没有声明的参数时,脚本输出了报错信息。

位置参数

位置参数就是在命令后面跟着的不以---开头的参数, 举个例子

#!/usr/bin/env python

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo")
args = parser.parse_args()

print(args.echo)

代码运行

$ python prog.py 
usage: prog.py [-h] echo
prog.py: error: too few arguments
$ python prog.py foo
foo

我们用add_argument()方法增加了待解析的位置参数。这时如果不提供足够多的参数,运行程序时就会出现报错信息。当提供对应参数时,代码就能正常运行。

add_arguments() 可以传入多个参数,比较常用的是helptype, 一个能用于完善帮助信息,一个则是让python自动完成数据类型的转换

#!/usr/bin/env python

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", help="display a square of a given number",type =int)
args = parser.parse_args()

print(args.square ** 2)

代码执行的结果如下

$ python prog.py -h
usage: prog.py [-h] square

positional arguments:
  square      display a square of a given number

optional arguments:
  -h, --help  show this help message and exit
$ python prog.py 2 
4

你可能感兴趣的:(如何使用Python对参数进行解析)