argparser的使用方法

本篇内容主要讲解“argparser的使用方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“argparser的使用方法”吧!

创新互联公司主要从事成都网站制作、做网站、外贸营销网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务建瓯,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792

通过命令行运行Python脚本时,可以通过ArgumentParser来高效地接受并解析命令行参数。

一.流程

使用argparse 配置命令行参数时,需要三步:

  1. 创建 ArgumentParser() 对象

  2. 调用 add_argument() 方法添加参数

  3. 使用 parse_args() 解析添加的参数

二.创建 ArgumentParser() 对象

新建一个ArgumentParser类对象,然后来添加若干个参数选项,最后通过parse_args()方法解析并获得命令行传来的参数。

parser = argparse.ArgumentParser()

    parser.add_argument("-p", "--port",
        dest='port',
        default="/dev/ttyUSB0",
        help="serial port where the MCU is connected to.)

    parser.add_argument("-v", "--version",
        dest='version',
        action='store_true',
        help="show the version number of this program and exit.")

    args = parser.parse_args()

三. ArgumentParser对象add_argument()方法

ArgumentParser.add_argument(name or flags…[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

参数:
    name or flags:传递给add_argument() 的第一个参数因此必须是一个标记序列或者一个简单的参数名字
    action:指出应该如何处理命令行参数(支持的操作:’store’ ,’store_const’,’store_true’,’store_false’,’append’,’append_const’,’count’,’help’,’version’)
    nargs:将一个动作与不同数目的命令行参数关联在一起(支持的值:N,’?’,’*’,’+’)
    const:用于保存常量值,它们不是从命令行读入但是是ArgumentParser 的动作所要求的
    default:其默认值为None,指出如果命令行参数没有出现时它们应该是什么值
    type:允许任意必要的类型检查并作类型转换
    choices:某些命令行参数应该从一个受限的集合中选择
    required:如果要使得选项是必需的,可以指定True作为required=关键字参数的值给add_argument()
    help:包含参数简短描述的字符串
    metavar:默认情况下,对于位置参数直接使用dest的值,对于可选参数则将dest的值变为大写。注意metavar只会改变显示出来的名字parse_args() 对象中属性的名字仍然由dest的值决定。
    dest:对于位置参数的动作,dest 通常作为第一个参数提供给add_argument(),对于可选参数的动作,dest的动作通常从选项字符串推导出来,如:ArgumentParser生成的dest的值是将第一个长的选项字符串前面的–字符串去掉。如果没有提供长选项字符串,dest的获得则是将第一个短选项字符串前面的-字符去掉。任何内部的-将被转换为字符以确保字符串是合法的属性名字。(即对于可选参数,先找长的选项字符串,再找短选项字符串,并且内部的-会被转换为字符。)

四.举例

举例1

import argparse
 
parser = argparse.ArgumentParser()
parser.add_argument('--sparse', action='store_true', default=False, help='GAT with sparse version or not.')
parser.add_argument('--seed', type=int, default=72, help='Random seed.')
parser.add_argument('--epochs', type=int, default=10000, help='Number of epochs to train.')
 
args = parser.parse_args()
 
print(args.sparse)
print(args.seed)
print(args.epochs)

结果为:

/home/user/anaconda3/bin/python3.6 /home/user/lly/pyGAT-master/test.py
False
72
10000
 
Process finished with exit code 0

举例2

1) 一般形式
但是大多数情况下,脚本很可能需要多个参数,而且每次参数的类型用处各不相同,那么这个时候在参数前添加标签表明参数的类型和用途便十分有用,而利用argparse模块可以很方便得实现这一目的。
同样用名为test.py的脚本举个栗子:

import argparse

parser = argparse.ArgumentParser(description="your script description")            # description参数可以用于插入描述脚本用途的信息,可以为空parser.add_argument('--verbose', '-v', action='store_true', help='verbose mode')   # 添加--verbose标签,标签别名可以为-v,这里action的意思是当读取的参数中出现--verbose/-v的时候   # 参数字典的verbose建对应的值为True,而help参数用于描述--verbose参数的用途或意义。args = parser.parse_args()                                                         # 将变量以标签-值的字典形式存入args字典if args.verbose:print "Verbose mode on!"else:print "Verbose mode off!"

运行python test.py后面跟了--verbose/-v的时候会输出前者,如果什么都没有会输出后者。如果输入了--verbose/-v以外的参数则会报错:unrecognized arguments
稍微提一下,action参数表示值赋予键的方式,这里用到的是bool类型;如果是'count'表示将--verbose标签出现的次数作为verbose的值;'append'表示将每次出现的该便签后的值都存入同一个数组再赋值。(嘛,一般后面两种用的比较少就不多说了)
PS:--help标签在使用argparse模块时会自动创建,因此一般情况不需要我们主动定义帮助信息。

$ python test.py --helpusage: test.py [-h] [--verbose]

your script description

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

2) 必需参数
这种模式用于确保某些必需的参数有输入。
parser.add_argument('--verbose', required=True, type=int)
required标签就是说--verbose参数是必需的,并且类型为int,输入别的类型会报错。

3)位置参数(positional arguments)
位置参数与sys.argv调用比较像,参数没有显式的--xxx或者-xxx标签,因此调用属性也与sys.argv相同。

parser.add_argument('filename')    # 输入的第一个参数赋予名为filename的键args = parser.parse_args()print "Read in %s" %(args.filename)

输入python test.py test.txt则会输出Read in test.txt
此外,可以用nargs参数来限定输入的位置参数的个数,默认为1。当然nargs参数也可用于普通带标签的参数。
parser.add_argument('num', nargs=2, type=int)表示脚本可以读入两个整数赋予num键(此时的值为2个整数的数组)。nargs还可以'*'用来表示如果有该位置参数输入的话,之后所有的输入都将作为该位置参数的值;‘+’表示读取至少1个该位置参数。'?'表示该位置参数要么没有,要么就只要一个。(PS:跟正则表达式的符号用途一致。)比如用:

parser.add_argument('filename')
parser.add_argument('num', nargs='*)

就可以运行python test.py text.txt 1 2
由于没有标签,所以用位置参数的时候需要比较小心。

4)输入类型
之前已经提到了用type参数就可以指定输入的参数类型。而这个type类型还可以表示文件操作的类型从而直接进行文件的读写操作。

parser.add_argument('file', type=argparser.FileType('r'))    # 读取文件args = parser.parse_args()for line in args.file:print line.strip()

5)参数默认值
一般情况下会设置一些默认参数从而不需要每次输入某些不需要变动的参数,利用default参数即可实现。

parser.add_argument('filename', default='text.txt')

这个时候至直接运行python text.py就能得到Read in text.txt而不需要输入文件名了。

6)候选参数选择
表示该参数能接受的值只能来自某几个值候选值中,除此以外会报错,用choices参数即可。比如:

parser.add_argument('filename', choices=['test1.txt', 'text2.txt'])

到此,相信大家对“argparser的使用方法”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


本文标题:argparser的使用方法
本文URL:http://scyanting.com/article/jpojsi.html