python命令行传参
1、sys.argv + getopt传参
import sys, getopt
#参考 https://www.cnblogs.com/lwp-boy/p/13415886.html
'''
无名参数:
执行程序必须给定的参数,且给定参数顺序固定。通过sys.argv获取,参数以空格区分,
遇到空格就认为是一个参数,第一个参数sys.argv[0]为执行的脚本本身。
带名参数:
执行程序通过-或者--加参数名指定的参数,参数顺序无关,参数个数可动态变化,参数可带值也可不带值,通过getopt模块进行解析。
函数原型:getopt(args, shortopts, longopts = [])
参数说明:
args 参数列表,及sys.argv参数,通常给值sys.argv[1:]
shortopts 短字符标识,通过-标识的参数,每个标识只能是一个字符,如果参数需要带值,则在该字符后面加上:符号
longopts 字符串标识,通过--标识的参数,每个参数为一个字符串,如果需要带值,则在该字符串后面加上=符号
参数描述:
-h: 不带参数值
-y: 不带参数值
-x: 需要带参数值,方式: -x 10 (10为参数值)
--help: 不带参数值
--version: 需要带参数值, 方式 --version=v.1.1 (v.1.1为参数值)
'''
if __name__ == '__main__':
opts, _ = getopt.getopt(sys.argv[1:], 'hyx:', ["help","version="])
for opt,value in opts:
if opt in ("-h","--help"):
print("This is help")
elif(opt == "-x"):
print("x value is :",value)
elif(opt == "-y"):
print("This is y")
elif opt == "--version":
print("Version is :",value)
pass
2、argparse传参(建议,自带-h参数解析)
参考
import argparse
# 参考 https://blog.csdn.net/lanzheng_1113/article/details/77574446
# 参考 https://docs.python.org/zh-cn/3/library/argparse.html
'''
argparse自带-h参数解析 :
python code002_argvparse.py -h
usage: code002_argvparse.py [-h] [-a PARAM_A] [-v VERSION]
[-m {pth1,pth2,pth3}] [-r | -l]
show example
optional arguments:
-h, --help show this help message and exit
-a PARAM_A, --param_a PARAM_A
help of param_a
-v VERSION, --version VERSION
help of version
-m {pth1,pth2,pth3}, --mode {pth1,pth2,pth3}
help of version
-r, --remote remote mode
-l, --local local mode
python code002_argvparse.py --param_a=1.25635 -v="0.1.0"
设置了param_a值为:1.25635
设置了version值为:0.1.0
设置了mode值为:pth1
'''
if __name__ == '__main__':
parser = argparse.ArgumentParser(description="show example") # 这一行是argparse的构造函数,当其中description参数指定了当用户敲入-h时显示的模块介绍。
parser.add_argument("-a", "--param_a", type=float, default=1.25, help="help of param_a") # 这个函数用于添加可解析的参数,其中action=store_true的意义是如果使用了这个参数则值默认为TRUE。
parser.add_argument("-v", "--version", type=str, default="version", help="help of version")
parser.add_argument("-m", "--mode", type=str, default="pth1", choices=['pth1', 'pth2', 'pth3'], help="help of version")
exptypegroup = parser.add_mutually_exclusive_group() #这个函数添加一组互斥的选项,如上例中的-l和-r只能用一个。
exptypegroup.add_argument("-r", "--remote", help="remote mode", action="store_true")
exptypegroup.add_argument("-l", "--local", help="local mode", action="store_true")
ARGS = parser.parse_args()
if ARGS.param_a:
print(u"设置了param_a值为:" + str(ARGS.param_a))
if ARGS.version:
print(u"设置了version值为:" + str(ARGS.version))
if ARGS.mode:
print(u"设置了mode值为:" + str(ARGS.mode))