python argparse bool_Python-argparse模块使用

0-概念

通俗来说,命令行与参数解析就是当你输入cmd 打开dos 交互界面时候,启动程序要进行的参数给定。比如在dos 界面输入:

python openPythonFile.py "a" -b "number"

其中的"a", -b 等就是命令行与参数解析要做的事。

1-基础

import argparse

parser = argparse.ArgumentParser()

parser.parse_args()

测试

$ python3 prog.py

$ python3 prog.py --help

usage: prog.py [-h]

optional arguments:

-h, --help show this help message and exit

$ python3 prog.py --verbose

usage: prog.py [-h]

prog.py: error: unrecognized arguments: --verbose

$ python3 prog.py foo

usage: prog.py [-h]

prog.py: error: unrecognized arguments: foo

以下是发生的事情:在没有任何选项的情况下运行脚本会导致没有显示到stdout。不太有用。

第二个开始显示

该--help选项也可以缩短为-h,是我们免费获得的唯一选项(即无需指定)。指定其他任何内容都会导致错误。但即便如此,我们也会免费获得有用的使用信息。

介绍位置参数

import argparse

parser = argparse.ArgumentParser()

parser.add_argument("echo")

args = parser.parse_args()

print(args.echo)

并运行代码:

$ python3 prog.py

usage: prog.py [-h] echo

prog.py: error: the following arguments are required: echo

$ python3 prog.py --help

usage: prog.py [-h] echo

positional arguments:

echo

optional arguments:

-h, --help show this help message and exit

$ python3 prog.py foo

foo

这是正在发生的事情:我们添加了add_argument()方法,这是我们用来指定程序愿意接受的命令行选项的方法。在这种情况下,我将其命名为echo符合其功能。

现在调用我们的程序需要我们指定一个选项。

该parse_args()方法实际上返回了指定选项中的一些数据,在本例中echo。

变量是某种形式的“魔法”,echo。

但请注意,虽然帮助显示看起来很好,但它目前并没有那么有用。例如,我们看到我们得到了echo一个位置参数,但我们不知道它的作用,除了通过猜测或阅读源代码。所以,让它更有用:

import argparse

parser = argparse.ArgumentParser()

parser.add_argument("echo", help="echo the string you use here")

args = parser.parse_args()

print(args.echo)

我们得到:

python3 prog.py -h

usage: prog.py [-h] echo

positional arguments:

echo echo the string you use here

optional arguments:

-h, --help show this help message and exit

现在,做一些更有用的事情怎么样:(数字输入)

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)

以下是运行代码的结果

$ python3 prog.py 4

Traceback (most recent call last):

File "prog.py", line 5, in

print(args.square**2)

TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'

这是因为

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)

以下是运行代码的结果:

$ python3 prog.py 4

16

$ python3 prog.py four

usage: prog.py [-h] square

prog.py: error: argument square: invalid int value: 'four'

该程序现在甚至可以帮助检测出错误的非法输入。

介绍可选参数

import argparse

parser = argparse.ArgumentParser()

parser.add_argument("--verbosity", help="increase output verbosity")

args = parser.parse_args()

if args.verbosity:

print("verbosity turned on")

输出

$ python prog.py --verbosity 1

verbosity turned on

$ python prog.py

$ python prog.py --help

usage: prog.py [-h] [--verbosity VERBOSITY]

optional arguments:

-h, --help show this help message and exit

--verbosity VERBOSITY

increase output verbosity

$ python prog.py --verbosity

usage: prog.py [-h] [--verbosity VERBOSITY]

prog.py: error: argument --verbosity: expected one argument

下面是程序运行产生的结果:当我们在命令行中列出了–verbosity时,程序才会给我们显示所需要的信息,而如果我们不列出–verbosity则什么都不会显示。

显示这个选项是可选择的,即使我们不添加也不会有任何的错误,注意,默认的时候argparse.verbosity是不会赋任何值的,所以上面的程序中if语句出现了错误

当使用–verbosity时,我们必须给它一个值

–verbosity能接受任意的整数值,但是为了简化程序,我们希望只有true和false两个bool型的变量能够被使用,让我们相应修改我们的程序:

import argparse

parser = argparse.ArgumentParser()

parser.add_argument("--verbose", help="increase output verbosity",

action="store_true")

args = parser.parse_args()

if args.verbose:

print "verbosity turned on"

输出:

$ python prog.py --verbose

verbosity turned on

$ python prog.py --verbose 1

usage: prog.py [-h] [--verbose]

prog.py: error: unrecognized arguments: 1

$ python prog.py --help

usage: prog.py [-h] [--verbose]

optional arguments:

-h, --help show this help message and exit

--verbose increase output verbosi

分析:比起之前需要一个Value,现在的做法更像一个标志选项,我们甚至为了实现这中想法修改了选项参数,我们添加了一个新的关键字“action”,并赋值给他一个默认的“store_true”,表示,如果这个选项被列出来就表示为true,若没有则为false。

当再给选项一个特定的值时反而会报错,因为选项本身代表了true

注意帮助选项的不同。

缩略选项

如果你对于命令行比较熟悉的化妆,你会注意到我们还没有提及到缩略选项,它其实要求很简单

import argparse

parser = argparse.ArgumentParser()

parser.add_argument("-v", "--verbose", help="increase output verbosity",

action="store_true")

args = parser.parse_args()

if args.verbose:

print "verbosity turned on"

结果

$ python prog.py -v

verbosity turned on

$ python prog.py --help

usage: prog.py [-h] [-v]

optional arguments:

-h, --help show this help message and exit

-v, --verbose increase output verbosity

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值