argparse是 Python 标准库中推荐的命令行解析模块,使得程序可读性非常好。也就是说,我如果是在终端运行python程序,或者我需要经常改动python中的一些参数,那么argparse就必不可缺了。
同时作为Github开发工程师,从上面下载的代码基本都是用了argparse,所以不得不需要掌握它的用法。
主要有三个步骤:
下面给出一些示例。
python 文件名为 arg.py
# -*- coding: utf-8 -*-
import argparse
parser = argparse.ArgumentParser() #创建对象
parser.parse_args() #解析参数
在终端运行:
(pytorch4) C:\>python arg.py --help
usage: arg.py [-h]
optional arguments:
-h, --help show this help message and exit
(pytorch4) C:\>python arg.py foo
usage: arg.py [-h]
arg.py: error: unrecognized arguments: foo
这是第2个例子,由于电脑刚刚出现问题,现在文件名字为prog.py。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo")
args = parser.parse_args()
print(args.echo)
在终端运行:
(pytorch4) C:\args>python prog.py
usage: prog.py [-h] echo
prog.py: error: the following arguments are required: echo
(pytorch4) C:\args>python prog.py hello
hello
为了进一步说明 ehco是干什么的,可以加上表述的话
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo", help="echo the string you use here")
args = parser.parse_args()
print(args.echo)
终端运行为:
(pytorch4) C:\args>python prog.py -h
usage: prog.py [-h] echo
positional arguments:
echo echo the string you use here
(pytorch4) C:\args>python prog.py hello
hello
这是第3个例子,用来做平方运算。
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)
type=int
是必须的。终端输出为:
(pytorch4) C:\args>python prog.py 4
16
第4个例子,上面的例子都是一个参数,当多个参,如何对应起来呢?
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)
上述例子接受任何整数值作为 --square的参数
(pytorch4) C:\args>python prog.py --square 4
16
第5个例子。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("x", type=int, help="the base")
parser.add_argument("y", type=int, help="the exponent")
parser.add_argument("-v", "--verbosity", action="count", default=0)
args = parser.parse_args()
answer = args.x**args.y
if args.verbosity >= 2:
print("Running '{}'".format(__file__))
if args.verbosity >= 1:
print("{}^{} == ".format(args.x, args.y), end="")
print(answer)
终端运行:
(pytorch4) C:\args>python prog.py 4 2
16
如果是:
parser.add_argument("--x", type=int, help="the base")
parser.add_argument("--y", type=int, help="the exponent")
输出:
(pytorch4) C:\args>python prog.py --x 4 --y 2
16
(pytorch4) C:\args>python prog.py --y 4 --x 3
81
没有前面变量名,参数按照顺序来对应;反之,按照变量赋值。
除了这里显示的内容,argparse 模块还提供了更多功能。 它的文档相当详细和完整,包含大量示例。