python 通过getopt模块来获取命令行参数

# -*- coding: UTF-8 -*-
import sys
import getopt


def main(argv):
    """
        通过 getopt模块 来识别参数

    username = ""
    password = ""

    try:
        """
            options, args = getopt.getopt(args, shortopts, longopts=[])

            参数args:一般是sys.argv[1:]。过滤掉sys.argv[0],它是执行脚本的名字,不算做命令行参数。
            参数shortopts:短格式分析串。例如:"hp:i:",h后面没有冒号,表示后面不带参数;p和i后面带有冒号,表示后面带参数。
            参数longopts:长格式分析串列表。例如:["help", "ip=", "port="],help后面没有等号,表示后面不带参数;ip和port后面带冒号,表示后面带参数。

            返回值options是以元组为元素的列表,每个元组的形式为:(选项串, 附加参数),如:('-i', '192.168.0.1')
            返回值args是个列表,其中的元素是那些不含'-'或'--'的参数。
        """
        opts, args = getopt.getopt(argv, "hu:p:", ["help", "username=", "password="])
    except getopt.GetoptError:
        print('Error: test_arg.py -u  -p ')
        print('   or: test_arg.py --username= --password=')
        sys.exit(2)

    # 处理 返回值options是以元组为元素的列表。
    for opt, arg in opts:
        if opt in ("-h", "--help"):
            print('test_arg.py -u  -p ')
            print('or: test_arg.py --username= --password=')
            sys.exit()
        elif opt in ("-u", "--username"):
            username = arg
        elif opt in ("-p", "--password"):
            password = arg
    print('username为:', username)
    print('password为:', password)

    # 打印 返回值args列表,即其中的元素是那些不含'-'或'--'的参数。
    for i in range(0, len(args)):
        print('参数 %s 为:%s' % (i + 1, args[i]))


if __name__ == "__main__":
    # sys.argv[1:]为要处理的参数列表,sys.argv[0]为脚本名,所以用sys.argv[1:]过滤掉脚本名。
    main(sys.argv[1:])

你可能感兴趣的:(python 通过getopt模块来获取命令行参数)