命令行工具是一种十分常见的专用工具。例如我们在做实验,要想调节主要参数的情况下,假如主要参数是根据硬编码写在编码里的,那麼每一次改动主要参数的情况下,改动相同的控制台和逻辑性显而易见不是便捷的。更强的办法是设定必需的主要参数根据cmd传到,那样大家只须要在操作时改动主要参数。

sys.argv

分析从cmd传到的主要参数的非常简单方式是根据sys.argv获得大家从cmd传到的主要参数

import sysprint(sys.argv)

使用方法非常简单,只需启用sys.argv..Argv是一个二维数组。如果有好几个主要参数,我们可以根据字符浏览。可是,必须特别注意的一点是,储存在argv中的最后以Python启用逐渐。

大家看来一个事例。大家随便传到一些主要参数。打印出sys.argv后,看上去是如此的。

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

换句话说,大家的python running test.py的文件夹名称也被做为主要参数之一,因此要是要想获得自定主要参数,大家必须从argv[1]逐渐。

sys.argv的特点是便捷,大家只可以浏览它就可以获得传到的主要参数。可是缺陷很显著,便是作用太少。假如看其他高手的编码,想要知道运作时必须传到什么主要参数,每一个主要参数意味着是什么意思,就做不到了。

为了更好地彻底解决这个问题,大家必须应用封裝大量涵数的专用工具,这也是这篇文章的关键——arg parse。

基本上使用方法

Argparse是Python中的一个库。大家必须主导入它。我没弄错,这一库应该是Python内置的,不用安裝。我们可以立即应用。

在应用它以前,大家必须复位这一在线解析,它是一个主要参数在线解析。

# 这儿ArgumentParser能够传到一个字符串数组,表明主要用途parser = argparse.ArgumentParser()parser.parse_args()

这时,早已得到一个在线解析。在我们运作时,我们可以传到主要参数-h,这代表着help,也就是查验当今在线解析中界定的主要参数。即然大家如今一无所有,能呈现的仅有协助。

python命令行参数是什么-命令行参数的3种传入方式-第1张图片必不可少主要参数

最先,使我们介绍一下需要的主要参数。它的界定解析函数中必须的主要参数是一样的,也就是大家运作程序流程必须的主要参数。要是没有,那麼程序流程也不应当强制执行,而且会汇报和提醒一个不正确。

界定所需主要参数的方式比较简单,大家只要根据add_argument传到主要参数的名字。

import argparseparser = argparse.ArgumentParser("For test the parser")parser.add_argument('test')args = parser.parse_args()print(args.test)

那样,大家界定了一个名叫test的主要参数,我们可以根据args.test来浏览它..

这时候,在我们再度运作python test.py -h时,会发觉信息提示中多了一行:

python命令行参数是什么-命令行参数的3种传入方式-第2张图片告知大家所需主要参数中间有检测,所需主要参数立即传到,沒有作为前缀。因而,在我们实行它时,我们可以立即转至pythontest.pyxxx。

可选主要参数

假如必须的主要参数,自然有可选择的主要参数。因为可选主要参数是供选择的,因而在应用主要参数时,大家必须在主要参数前面一个标识-或–。比如,大家的主要参数名是test,能够界定为-test或-test,能够应用在其中一个,还可以两个都界定。

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

Running -h表明可选主要参数中有越多的test和–test。

python命令行参数是什么-命令行参数的3种传入方式-第3张图片可是,只打印出出了主要参数名字,但它没告知大家这一主要参数是干什么的。比如,协助主要参数后边是表明此协助信息并撤出的提醒。如果我们也必须协助来提示大家主要参数的功效呢?

我们可以根据help主要参数传到要想打印出的提醒,便捷客户在运用时掌握主要参数。

比如,使我们将这一行改成:

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

因而,在我们运作它时,大家会遇到提醒:

python命令行参数是什么-命令行参数的3种传入方式-第4张图片系统软件初始值

假如主要参数许多,有时候大家很有可能不愿为每一个主要参数特定一个值,反而是愿意在沒有录入的情况下有一个初始值。这一念头很一切正常,做起來也非常简单。我们可以根据默认设置主要参数来特定它。

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

比如,我们在编码里将检测主要参数的初始值设定为1。在我们运作时,如果我们不填好检测主要参数,程序流程将应用它的初始值,即1。

可是,有关初始值的一点信息内容不容易在鼓励中打印出,因此大家必须提醒客户提醒中的初始值是啥。

种类

我们可以界定主要参数的初始值,自然大家还可以界定它的种类。

由于从cmd传到的主要参数默认设置全是字符串数组,假如要做计算能力,在应用str的过程中必须自身变换,十分不方便。我们可以在传到主要参数时进行种类配对,因此假如传到主要参数的种类不正确,它会立即汇报不正确,而不是往下运作。

这非常容易保证,并且能够根据种类主要参数来完成。

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

比如,在我们界定一个int-type主要参数,而传到的主要参数与该种类不配对时,它将造成一个不正确:

python命令行参数是什么-命令行参数的3种传入方式-第5张图片错误报告写的很清晰,大家获得一个失效的int值,这就是abc。

可选值

它还适用可选值,这种值非常容易了解,换句话说,大家期待将传到主要参数的标准限定为好多个值。比如,大家期待传到的值是0或1,或是在一些特殊的值中。这时,我们可以根据choices主要参数来完成这一点。

Choices主要参数在目录中传送,这也是大家的比较有限范畴,只容许这一范畴内的值。

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

如果我们运作传到检测=1,它将造成一个不正确,告知大家传到值没有挑选的范围内。

python命令行参数是什么-命令行参数的3种传入方式-第6张图片这是一个有意思的事例。假如你细心看,你能看到大家的初始值设定为1,可是可选值中沒有1。这也是容许的。初始值很有可能没有可选值的范畴内,可是在我们传到1时,将开启可选值查验。

个人行为

Action是一个奇妙有效的实际操作,能够特定如何处理主要参数。大家的默认设置方式是store,也就是store的意思,大家都能了解。此外也有store_true,表明假如发生便是确实,不然便是假的。

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

在我们将检测主要参数的界定改成这一时,大家将较为实际操作的結果。

python命令行参数是什么-命令行参数的3种传入方式-第7张图片除开store_true以外,也有store_const,这表明当它发生时,它被特定为数值。

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

因而,在我们特定-test主要参数时,它将全自动分派给23。

除开这两个主要参数以外,另一个常见的主要参数是append,它能够全自动将反复发生的同一个主要参数储存到目录中。

parser.add_argument('-test', '--test', action='append', type=int, help='just for help')python命令行参数是什么-命令行参数的3种传入方式-第8张图片nargs

Nargs也是一个十分有效的主要参数,您能够对该主要参数实行一些花里胡哨的实际操作。nargs几个传到主要参数,第一个是n,是整数金额。意味着能够接受n个变量值,这种变量值将储存在一个目录中。

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

传到的另一个主要参数是“ ”或“*”,他们能够在目录中储存任何总数的值。

parser.add_argument('-test', '--test', nargs='*', type=int, help='just for help')python命令行参数是什么-命令行参数的3种传入方式-第9张图片引言

拥有在线解析,大家用Python解决命令行参数会比较简单,能够做各种各样自定实际操作。除开大家上边讲解的,也有一些别的不太常见的实践活动,因此他们并不是详细的。有兴趣的同学们能够自已去了解一下。

评论(0条)

刀客源码 游客评论