python中的argparse怎么使用?

argparse是 Python 标准库中推荐的命令行解析模块,使得程序可读性非常好。也就是说,我如果是在终端运行python程序,或者我需要经常改动python中的一些参数,那么argparse就必不可缺了。

同时作为Github开发工程师,从上面下载的代码基本都是用了argparse,所以不得不需要掌握它的用法。

argparse 用法

主要有三个步骤:

  • 创建 ArgumentParser() 对象
  • 调用 add_argument() 方法添加参数
  • 使用 parse_args() 解析添加的参数,得到返回值

下面给出一些示例。

1 让我们从一个简单到(几乎)什么也做不了的例子开始:

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
  • 在没有任何选项的情况下运行脚本不会在标准输出显示任何内容。这没有什么用处。
  • 第二行代码开始展现出 argparse 模块的作用。我们几乎什么也没有做,但已经得到一条很好的帮助信息。
  • –help 选项,也可缩写为 -h,是唯一一个可以直接使用的选项(在该例子中,不需要指定该选项的内容)。指定任何内容都会导致错误。即便如此,我们也能直接得到一条有用的用法信息。
2 位置参数介绍

这是第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
  • 我们增加了 add_argument() 方法,该方法用于指定程序能够接受哪些命令行选项
  • parse_args() 从选项中返回一些数据,在这个例子返回的是hello,注意不是非要写成echo

为了进一步说明 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 更进一步的例子

这是第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)
  • argparse 会把我们传递给它的选项视作为字符串,除非我们告诉它别这样。所以,让我们来告诉 argparse 来把这一输入视为整数。因此type=int是必须的。

终端输出为:

(pytorch4) C:\args>python prog.py 4
16
4 如何对应传递的参数,可选的参数

第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 将可选参数和位置结合起来

第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

没有前面变量名,参数按照顺序来对应;反之,按照变量赋值。

6 后记

除了这里显示的内容,argparse 模块还提供了更多功能。 它的文档相当详细和完整,包含大量示例。

你可能感兴趣的:(互联网相关,问题,python,编程语言,深度学习)