python命令行传参

python命令行传参

1、sys.argv + getopt传参

参考Python main函数、命名行参数

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))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值