为了方便调试,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.常规情况
每次参数的类型用处各不相同,所以在参数前添加标签表明参数的类型和用途便十分有用,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,感谢两位博主整理的资料。