美文网首页
【Python的小技巧(二)】getopt库实现脚本传入参数

【Python的小技巧(二)】getopt库实现脚本传入参数

作者: Geekero | 来源:发表于2020-03-18 12:45 被阅读0次

    简介

    getopt模块用于解析脚本参数,该模块是专门用来处理命令行参数的

    getopt.getopt(args, shortopts, longopts=[])
    

    解析命令行选项及参数列表

    • args:要解析的参数列表,但不包括当前执行的python脚本名称,一般等同于sys.argv[1:]。
    • shortopts(短选项-):要识别的短参数字符串,如果后接:表示需要给定参数。
      例如:hw:c:
      -h 后面没有冒号:表示后面不带参数,p:i:后面有冒号表示后面需要参数
    • longopts(长选项--):要识别的长参数列表(不包括--前缀),长选项如果后接=表示需要给定参数,不支持可选参数。
      例如:
      ["help","warning=","critical="]
      help后面没有等号=,表示后面不带参数;其他三个有=,表示后面需要参数

    注意:定义命令行参数时,要先定义带'-'选项的参数,再定义没有‘-’的参数

    返回值

    函数返回值由两个元素组成:

    • 第一个是(option, value)元组的列表
      • 返回值 options 是个包含元组的列表,每个元组是分析出来的格式信息,比如[('-w','5),('-c','10')]
    • 第二个是args剥离短选项及其参数和长选项及其参数之后剩余的参数列表。
      (option, value)元组中的option表示包含-或--前缀的选项,value表示该option对应的参数,可以为空字符串表示无参数
      • args 是个列表,包含那些没有‘-’或‘--’的参数,比如:['55','66']

    然后现在再看官网思路就清晰多了:https://docs.python.org/2/library/getopt.html

    在脚本中,经典用法是这样的:

    def parameter_check():
        try:
            opts, args = getopt.getopt(sys.argv[1:], "hi:p:", ["help", "ip=", "port="])
        except getopt.GetoptError as err:
            # print help information and exit:
            print(str(err))  # will print something like "option -a not recognized"
            usage()
            sys.exit(2)
        
        ip=port=None
        for opt, arg in opts:
            if opt in ("-i", "--ip"):
                ip = arg
            elif opt in ("-p", "--port"):
                port = arg
            elif opt in ("-h", "--help"):
                usage()
                exit()
            else:
                usage()
                exit()
        if ip==None or port==None:
            usage()
            sys.exit()
    
        return(ip, port)
    
    
    if __name__ == "__main__":
        print(parameter_check())
    

    测试

    $python test.py -h 
    
            Program: test.py
            Version:V1.0.0
            Author: Robin
            Date:2020-01-16
    
            Usage:
               --help  -h    Help
               --ip    -i    IP_address
               --port  -p    Port_number
    
    $python test.py --ip 192.168.3.1 --port 22
    ('192.168.3.1', '22')
    

    参考文章

    相关文章

      网友评论

          本文标题:【Python的小技巧(二)】getopt库实现脚本传入参数

          本文链接:https://www.haomeiwen.com/subject/hzpqyhtx.html