说明:

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

args是要解析的参数列表(不包括程序启动路径),通常是sys.argv[1:]。
shortopts是脚本要识别的选项字母字符串,其中的选项需要一个参数,后接一个冒号。
longopts(如果已指定)必须是包含应支持的long选项名称的字符串列表。'--'选项名称中不应包含前导字符。需要参数的长选项应后跟等号('=')。不支持可选参数。要仅接受长选项,shortopts应该为空字符串。

1、命令行参数获取方法使用sys.argv

test.py

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys

if __name__ == "__main__":
    for i in range(len(sys.argv)):
        print(sys.argv[i])

执行

python test.py 1 2

输出:

test.py
1
2

sys.argv第一个是脚本路径,剩下的是命令行参数。

2、getopt用法

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
import getopt


if __name__ == "__main__":
    try:
        opts, args = getopt.getopt(sys.argv[1:],"-h-i:-p:-t:-v", ["help", "ip=", "port=", "types=", "version"])
    except getopt.GetoptError:
        print('test.py -h to help')
        exit(1)

    print(opts)
    # print(args)
    if not opts:
        print('test.py -h to help')
        exit(1)

    ip = None
    port = None
    types = None
    for opt, arg in opts:
        if opt in ('-h', '--help'):
            print('test.py -i <ip> -p <port> -t <m1|m2>')
            sys.exit(0)
        if opt in ("-i", "--ip"):
            ip = arg
        if opt in ("-p", "--port"):
            port = arg
        if opt in ("-t", "--types"):
            types = arg
        if opt in ("-v"):
            print("version 0.0.0.0")
            exit(1)

    print("master ip {}, port {}, type {}.".format(ip, port, types))

"hi:p:t:v"中字母后面没有:的表示没有值。例如i:表示i后面有值,v表示v后面没有值。
"hi:p:t:v"也可以写成"-h-i:-p:-t:-v"的形式。

输入:

python test.py --ip=111 -p a

输出:

[('--ip', '111'), ('-p', 'a')]
master ip 111, port a, type None.

参考:
https://docs.python.org/3/library/getopt.html