赛博空间7号

The greatest enemy of knowledge is not ignorance, it is the illusion of knowledge.--Stephen William Hawking

python的argparse模块

我们直接上代码:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('integers', metavar='N', type=int,nargs='+')#"+"表示必选参数,‘?’表示可选参数
parser.add_argument('-f', '--foo', help='foo help')#前面有-表示可选参数
parser.add_argument('-b', '--bar', help='bar help')
parser.add_argument('-z', '--baz', help='baz help')
parser.add_argument('-t', '--turn-on', action='store_true')
parser.add_argument('-x', '--exclude', action='store_false')
parser.add_argument('-s', '--start', action='store_true')
args = parser.parse_args()

print(args)

argparse模块可以让用户自定义命令行参数。最棒的是argparse模块能自动生成help信息,用法信息和错误信息。

如果将上述代码保存为一个脚本prog.py,则我们可以在命令行中运行它,可以使用默认的-h参数获取帮助信息,还可以使用脚本中定义的所有参数。


我们首先使用-h参数查看帮助信息:

python prog.py -h

显示结果如下:

usage: parseargs.py [-h] [-f FOO] [-b BAR] [-z BAZ] [-t] [-x] [-s] N [N ...]

positional arguments:
  N

optional arguments:
  -h, --help         show this help message and exit
  -f FOO, --foo FOO  foo help
  -b BAR, --bar BAR  bar help
  -z BAZ, --baz BAZ  baz help
  -t, --turn-on
  -x, --exclude
  -s, --start


从代码中可以看出,通过add_argument()添加命令行参数:

(1)参数前面有‘-‘或nargs='?'为可选参数,nargs='+'为必选参数;

(2)有action的参数作为标记,不需为它传入参数如在命令行输入

python prog.py -t

得到结果:Namespace(bar=None, baz=None, exclude=True, foo=None, start=False, turn_on=True)

turn_on变为True,这种命令类似于开关;

(2)没有action的参数需要接受一个变量并将这个变量设为它

python prog.py -f 'sss'

结果:Namespace(bar=None, baz=None, exclude=True, foo='sss', start=False, turn_on=False)


parser.parse_args()用来解析参数,将每个参数转换为适当的类型,然后调用相应的操作,结果是一个Namespace对象。


更多的内容请查看官方文档

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

© 版权所有:沈阳市和平区赛博空间咨询部|辽ICP备18005891号
Powered by Z-BlogPHP & Yiwuku.com