天牛3d图库彩吧彩报(python参数设置成通过命令行传入)

资讯速递

本文小编围绕 天牛3d图库布衣天下,天牛3d图库3d图库汇总,天牛3d图库彩吧彩报第一版,天牛3d图库大全,做一个相干引见。本文共计3768个字,估计浏览时长13分钟。

天牛3d图库:命令行参数工具是咱们十分罕用的工具,比方当咱们做试验心愿调理参数的时分,假如参数都是经过硬编码写在代码当中的话,咱们每次修正参数都需求修正对应的代码和逻辑显然这不太不便。比拟好的方法就是把必要的参数设置成经过命令行传入的方式,这样咱们只要要在运转的时分修正参数就能够了。

sys.argv

解析命令行传入参数最简略的方法就是经过sys.argv,sys.argv能够获取到咱们经过命令行传入的参数。

import sys

print(sys.argv)

用法很简略,只要要调用sys.argv即可。argv是一个数组,假如参数有多个,咱们能够经过下标进行拜访。然而有一点需求留意,argv当中存储的后果是从Python调用开端的。

咱们来看一个例子,咱们随便传入一些参数,print sys.argv之后是这样的。

python test.py -a -c -d=222 
>>> ["test.py", "-a", "-c", "-d=222"]

也就是说咱们python运转test.py这个文件名也当做参数之一,所以咱们要获取自定义参数的话需求从argv[1]开端。

sys.argv的益处是不便,咱们只要要拜访它就能够拿到传入的参数了。然而缺陷也很显著,就是性能太少了。如果咱们是看其余大神的代码,咱们想要晓得运转的时分需求传入什么参数,以及每个参数代表什么含意就做不到了。

为理解决这个成绩,咱们需求应用封装更多性能的工具,也是本篇文章的外围——argparse

根本用法

argparse是Python当中的一个库,咱们需求先import一下,这个库我没记错应该是Python自带的,也不需求装置,咱们间接就能够应用。

在咱们应用之前,咱们需求先初始化这个parse,也就是一个参数解析器。

# 这里ArgumentParser能够传入一个字符串,示意用处
parser = argparse.ArgumentParser()
parser.parse_args()

这个时分其实就曾经有了一个解析器了,咱们在运转的时分能够传入参数-h,示意help,也就是查看目前解析器当中定义的参数。因为咱们如今什么也没有,所以能显示进去的就只有help。

必选参数

首先咱们来引见必选参数,它的定义和函数当中的必填参数是一样的,也就是说咱们运转顺序必需要的参数。假如不传,那么顺序不应该执行会进行报错并提醒。

定义必选参数的办法十分简略,咱们只要要经过add_argument传入参数的称号就能够了。

import argparse

parser = argparse.ArgumentParser("For test the parser")
parser.add_argument("test")
args = parser.parse_args()

print(args.test)

这样咱们就定义了一个名叫test的参数,咱们能够经过args.test来拜访它。

这个时分咱们再运转python test.py -h就会发现提醒的信息当中多了一行:

通知咱们必选参数当中有test,必选参数间接传入,不需求加上前缀。所以咱们执行的时分间接python test.py xxx就能够了。

可选参数

有必选参数当然就有可选参数,可选参数因为可选可不选, 所以咱们在应用的时分需求在参数前加上标识-或许–。比方咱们参数名叫做test,能够定义成-test或许–test,这两种都能够,也能够这两种都定义。

parser.add_argument("-test", "--test")

咱们运转-h能够发现optional arguments当中多了test和–test。

然而这个只print进去了参数名,并没有通知咱们这个参数终究是做什么的,像是help参数前面就跟了show this help message and exit这个提醒语。假如咱们也心愿help可以提醒咱们参数的作用怎样办呢?

咱们能够经过help参数传入咱们心愿打印进去的提醒语,这样不便应用者在应用的时分理解参数的状况。

比方咱们把这行语句改成:

parser.add_argument("-test", "--test", help="just for help")

这样当咱们运转的时分,就会看到提醒语了:

默许值

假如参数很多的时分,咱们有时分可能不心愿每一个都指定一个值,而是心愿能够在不填的时分有一个默许值。这个想法十分失常,想要做到这点也很简略,咱们能够经过default参数来指定。

import argparse

parser = argparse.ArgumentParser("For test the parser")
parser.add_argument("-test", "--test", default=1, help="just for help")
args = parser.parse_args()

print(args.test)

比方这样咱们在代码当中把test参数的默许值设置成了1,当咱们运转的时分,假如不填test这个参数的话,那么顺序就会应用它的默许值也就是1。

但有一点默许值的信息并不会print在help当中,所以咱们需求本人在提醒语当中告知应用者默许值是多少。

type

咱们能够定义参数的默许值,当然也能够定义它的类型。

由于命令行传入的参数默许都是字符串,假如咱们要进行数学上的计算,应用str还需求本人转换,这就很不不便。咱们能够在传入参数的时分就实现类型的婚配,这样假如传入参数的类型不对, 那么间接报错,不往下运转。

想要做到这点也很简略,经过type参数就能够完成。

parser.add_argument("-test", "--test", default=1, type=int, help="just for help")

比方当咱们定义了一个int型的参数,而传入的是类型不婚配的话,那么就会惹起报错:

报错信息当中写得很分明,咱们失去了一个有效的int的值,它是abc。

可选值

它同样还支持可选值,可选值很好了解,就是咱们心愿限定传入参数的范畴仅仅在几个值当中。比方说咱们心愿传入的值不是0就是1,或许是在某几个详细的值当中,这个时分咱们能够经过choices参数来完成这一点。

choices参数传入的是一个list,也就是咱们的限定范畴,只有在这个范畴当中的值才被容许。

parser.add_argument("-test", "--test", default=1, choices=[2, 3, 4], type=int, help="just for help")

假如咱们运转传入test=1,那么就会惹起报错,通知咱们传入的值不在choices范畴当中。

这是一个挺无意思的例子,细心看会发现咱们默许值设置成了1,然而可选值当中并没有1。这也是容许的,默许值能够不在可选值范畴内,然而当咱们传入1就会触发可选值校验。

action

action是一个很神奇也很有用的操作,能够指定参数的解决形式。咱们默许的形式是store,也就是存储的意思,这个咱们都能了解。除此之外,还有store_true,它示意呈现则是true,否则是false。

parser.add_argument("-test", "--test", action="store_true", help="just for help")

当咱们把test参数的定义改成这样之后,咱们来比照一下运转的后果就明确了。

除了store_true之外还有store_const,也就是说呈现就指定为一个固定值。

parser.add_argument("-test", "--test", action="store_const", const=23, help="just for help")

这样当咱们指定-test参数之后,它会主动被赋值成23。

除了这两个之外,另外一个很罕用的参数是append,能够将屡次呈现的同一个参数主动存入一个list当中。

parser.add_argument("-test", "--test", action="append", type=int, help="just for help")

nargs

nargs也是一个十分有用的参数,能够对参数进行一些花式操作。nargs的传入参数有以下几种,首先是N,也就是一个整数。代表能够接纳N个参数值,这N个值会被存入一个list当中。

parser.add_argument("-test", "--test", nargs=2, type=int, help="just for help")

另外一种传入的参数是’+’或许是’*’,它能够将恣意多个值存入一个list当中。

parser.add_argument("-test", "--test", nargs="*", type=int, help="just for help")

总结

有了parser之后,咱们在Python当中解决命令行参数会变得十分简略,咱们能够做各种各样的定制化操作。除了咱们下面引见的之外,还有一些其余的做法,绝对来说不是十分罕用,所以就不逐个穷尽了,感兴味的同窗能够自行理解一下。

标签: