argparse


argparse是用来解析命令行选项、参数和子命令的解析器。替代了之前的命令行解析库getoptoptparse,至于替换的原因以及argparser的优势详见:
argparse - New Command Line Parsing Module
Why use argparse rather than optparse?
大体意思是:argparse可以提供支持位置参数、子命令、必须选项、"/f"和"+rgb"等选项语法、零个或多个或者一个或多个的参数选项等其他更加丰富灵活的用法。

使用方法


官方基础使用教程

基础


首先写一个简单的不处理任何参数的例子,写一个测试文件test.py:

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

在命令行中执行test.py文件

D:\MyProject\pythonProjects>python test.py

D:\MyProject\pythonProjects>python test.py --help
usage: test.py [-h]

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

D:\MyProject\pythonProjects>python test.py foo
usage: test.py [-h]
test.py: error: unrecognized arguments: foo

其中:

  • 如果在命令行中test.py后不跟任何参数的话,则标准输出为空;
  • --help或者-h命令获得帮助信息,是唯一不用指定具体参数的选项;
  • test.py 后制定其他参数会报错,返回错误信息。

位置参数


例子,test.py:

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

运行代码:

D:\MyProject\pythonProjects>python test.py
usage: test.py [-h] echo
test.py: error: the following arguments are required: echo

D:\MyProject\pythonProjects>python test.py -h
usage: test.py [-h] echo

positional arguments:
  echo

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

D:\MyProject\pythonProjects>python test.py foo
foo

其中:

  • 上述代码中使用add_argument()方法指定一个程序接收的命令行选项;
  • 这时在命令行中调用test.py,后必须指定一个选项参数;
  • parse_args()方法则返回命令行中为选项指定的数据;
  • 位置选项也成为返回数据的属性名,通过属性名可以获取数据; 上述帮助命令,返回信息可以知道echo是一个未知参数,但是其具体如何使用无法得知,为了使其更加丰富易懂,可以在add_argument()内添加其他的属性。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo", help="echo the string you use here")
args = parser.parse_args()
print(args.echo)

执行命令:

D:\MyProject\pythonProjects>python test.py -h
usage: test.py [-h] echo

positional arguments:
  echo        echo the string you use here.

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

例子2,对命令行输入的参数求平方:

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

运行结果:

D:\MyProject\pythonProjects>python test.py 4
Traceback (most recent call last):
  File "test.py", line 14, in <module>
    print(args.square**2)
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'

命令出错,因为argparse默认将我们传递的选项参数当作字符串,除非指明其参数类型,如下:

D:\MyProject\pythonProjects\violent_python\ch3>python test.py 4
16

results matching ""

    No results matching ""