日常工作中,编写Python脚本时,时常会遇到需要从命令行中传递一些参数到Python程序中,Python程序根据参数值进行相应的处理。本文简要介绍一下Python脚本中如何获得命令行传递来的参数,以及如何解析和处理它们。
sys.argv
解析Python中命令行参数的最传统的方法是通过sys.argv
-
sys.argv 是命令行参数列表。
-
len(sys.argv) 是命令行参数个数。
- sys.argv[0] 表示脚本名
示例
#!/usr/bin/python # -*- coding: UTF-8 -*- import sys print '参数个数为:', len(sys.argv), '个参数。' print '参数列表:', str(sys.argv) |
执行输出结果为:
$ python test.py arg1 arg2 arg3 参数个数为: 4 个参数。 参数列表: ['test.py', 'arg1', 'arg2', 'arg3'] |
这种方法比较简单,但灵活性较差,且解析出来的参数都是str类型。编写单数较少且固定的脚本时使用比较方便。
argparse
argparse模块是Python内置的参数解析模块,相比sys.argv功能更强大、也更加灵活,使用起来也并不复杂。
使用步骤如下:
第一步:创建ArgumentParser对象
import argparse parser = argparse.ArgumentParser(description='Description of the program') #description为可选参数 |
ArgumentParser支持更多可选参数,具体可以参考:https://docs.python.org/2/library/argparse.html#argumentparser-objects
第二步:添加选项和参数
parser.add_argument("--targetEnv",default = 'TEST', type=str, choices = ['TEST','PROD'],help="想要运行测试用例的环境,可选值[TEST,PROD]") parser.add_argument("--urlPrefix",default = 'http://127.0.0.1:8908/',type=str, help = "日志文件的下载url前缀————Jenkins运行时需要") |
第三步:解析和处理参数
args = parser.parse_args() env = args.targetEnv |
argparse可以做的事情:
自动生成help文档。
如上文所述Python脚本文件命名为py_run.py后执行--help的结果如下截图
add_argument支持对参数的灵活配置
|
关于每个参数的详细说明,请查阅https://docs.python.org/2/library/argparse.html#the-add-argument-method
参考资料
http://www.runoob.com/python/python-command-line-arguments.html
https://docs.python.org/2/library/argparse.html#argumentparser-objectshttps://docs.python.org/2/library/argparse.html