Python解析命令行读取参数 -- argparse模块

        为了方便调试,python脚本经常需要从命令行直接读取参数。根据参考链接1去学学吧,讲的很清楚。

        为了方便自己使用简单总结一下代码:

1.简单情况

        (摘自链一)如果脚本很简单或临时使用,没有多个复杂的参数选项,可以直接利用sys.argv将脚本后的参数依次读取(读进来的默认是字符串格式)。比如如下名为test.py的脚本:

import sys
print "Input argument is %s" %(sys.argv)

在shell脚本中运行python test.py helpful可以得到Input argument is helpful的结果。

2.常规情况

        大部分的时候还是需要对python脚本输入多个参数,而且每次参数的类型用处各不相同,所以在参数前添加标签表明参数的类型和用途便十分有用,argparse模块可方便做到。

python命令行参数(sys.argv)--摘自链2  sys.argv→argparser
        有时候我们需要写一些脚本处理一些任务,这时候往往需要提供一些命令行参数,根据不同参数进行不同的处理,在Python里,命令行的参数和C语言很类似(因为标准Python是用C语言实现的)。在C语言里,main函数的原型为int main(int argc, char ** argv),这里主要指linux平台, argc指的是命令行传入的参数个数(程序的name为第一个参数),而argv则是一个指针数组,每一个元素为指向一个命令行参数的指针。在Python里的命令行参数是存储在sys.argv里,argv是一个列表,第一个元素也为程序名称。

        作用: argparse 是 Python 内置的一个用于命令项选项与参数解析的模块,通过在程序中定义好我们需要的参数,argparse 将会从 sys.argv 中解析出这些参数,并自动生成帮助和使用信息。当然,Python 也有第三方的库可用于命令行解析,而且功能也更加强大,比如 docopt,Click。
 

        不多说,咱上代码。



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的时候
parser.add_argument('--echo',action='store_true', help='echo mode')     # add_argument()指定程序可以接受的命令行选项                                                                           # 参数字典的verbose建对应的值为True,而help参数用于描述--verbose参数的用途或意义。
args = parser.parse_args()   # parse_args()从指定的选项中返回一些数据,将变量以标签-值的字典形式存入args字典
if args.verbose:
    print("Verbose mode on!") 
else:
    print( "Verbose mode off!")

if args.echo:
    print("echo mode on!") 
else:
    print( "echo mode off!")

 当输入 python argparser.py --echo 

 当输入 python argparser.py --echo --verbose 

必要参数

这种模式用于确保某些必需的参数有输入。

parser.add_argument('--verbose', required=True, type=int)

required标签就是说--verbose参数是必需的,并且类型为int,输入别的类型会报错。

--help标签在使用argparse模块时会自动创建,因此一般情况不需要我们主动定义帮助信息。

稍微提一下,action参数表示值赋予键的方式,这里用到的是bool类型;如果是'count'表示将--verbose标签出现的次数作为verbose的值;'append'表示将每次出现的该便签后的值都存入同一个数组再赋值。(嘛,一般后面两种用的比较少就不多说了)

详细的参数使用请见链接1,2,感谢两位博主整理的资料。

参考资料

Python解析命令行读取参数 -- argparse模块 - Arkenstone - 博客园

python3中argparse模块详解_Never-Giveup的博客-CSDN博客_argparse模块
​​​​​​​Python通过argparse读取命令行参数_theVicTory的博客-CSDN博客

你可能感兴趣的:(Python,python,开发语言,后端)