说明:

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

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

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

test.py

1
2
3
4
5
6
7
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys

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

执行
1
python test.py 1 2

输出:
1
2
3
test.py
1
2

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

2、getopt用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/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"的形式。

输入:

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

输出:

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

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