getopt模块

python普通的命令行参数:

python test.py arg1 arg2 arg3
注:sys.argv[0] 表示脚本名

example:
def check(): 
    out = '\n    usage: python DTR.py <target> \n \n'
    if len(sys.argv) != 2 : 
        out += '    error: Please specify one parameter, not empty or multiple parameters! \n' 
        print out
        sys.exit(-1)
    return sys.argv[1]

getopt模块:

getopt模块是专门处理命令行参数的模块,支持短选项模式(-)和长选项模式(--)。

getopt.getopt 方法

getopt.getopt 方法用于解析命令行参数列表,语法格式如下:

getopt.getopt(args, options[, long_options])

方法参数说明:

  • args: 要解析的命令行参数列表。

  • options : 以字符串的格式定义,options 后的冒号 : 表示如果设置该选项,必须有附加的参数,否则就不附加参数。

  • long_options : 以列表的格式定义,long_options 后的等号 = 表示该选项必须有附加的参数,不带等号表示该选项不附加参数。

  • 该方法返回值由两个元素组成: 第一个是 (option, value) 元组的列表。 第二个是参数列表,包含那些没有 - 或 -- 的参数。

example:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys, getopt
def check():
    try:
        opts,args = getopt.getopt(sys.argv[1:],'-h-u:',['help','user='])
        if len(opts) != 1:
            print 'sudo runall.py -u <user>! '
            exit()
    except getopt.GetoptError:
    # except getopt.GetoptError as e:
        # print e   打印报错信息
        print 'sudo runall.py -u <user> !! '
        exit()
    for opt_name,opt_value in opts:
        if opt_name in ('-h','--help'):
            print 'sudo runall.py -u <user> '
        if opt_name in ('-u','--user'):
            user = opt_value
            print user

if __name__ == "__main__":
    check()

python test.py -u yx

python test.py --user yx或者python test.py --user=yx

python test.py -h

假如去掉u后边的冒号,执行python test.py -u 不报错

假如去掉user后边的等于号,执行python test.py --user 不报错

posted @ 2019-07-05 09:21  yangxueupc  阅读(346)  评论(0)    收藏  举报