getopt

Python 3.13版本以后弃用,转为argparse
官方文档:https://docs.python.org/zh-cn/3/library/getopt.html#module-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
# -*- coding: utf-8 -*-
# filename: getopt_example.py
import sys
import getopt

short_opts = 'abc'
long_opts = ['aa', 'bb', 'cc']

def main():
try:
opts, args = getopt.getopt(sys.argv[1:], short_opts, long_opts)
for opt_name, opt_value in opts:
print(opt_name,opt_value)
if opt_name in ('-a','--aa'):
print("this param is aa")
elif opt_name in ('-b', '--bb'):
print("this param is bb")
elif opt_name in ('-c', '-cc'):
print("this param is cc")
except getopt.GetoptError:
print("参数有误!")

if __name__ == '__main__':
main()

用法

1
2
3
 ☁  python getopt_example.py -a
-a
this param is aa

argparse

官方文档:https://docs.python.org/zh-cn/3/library/argparse.html#
action详解:https://docs.python.org/zh-cn/3/library/argparse.html#action

栗子

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
# -*- coding: utf-8 -*-
# filename: argparse_example.py
import argparse

def main():
parser = argparse.ArgumentParser(
prog='ProgramName',
description='What the program does',
epilog='Text at the bottom of help'
)
# 添加参数
parser.add_argument("-a","--aa",action="store_true",help="input aa option")
parser.add_argument("-b","--bb",action="store_true",help="input bb option")
parser.add_argument("-c","--cc",action="store_true",help="input cc option")
# 解析参数
args = parser.parse_args()

if args.aa:
print("this param is aa")
elif args.bb:
print("this param is bb")
elif args.cc:
print("this param is cc")
else:
print("参数有误")

if __name__ == '__main__':
main()

用法

1
2
 ☁  python getopt_example.py -a
this param is aa

参数详解

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
`prog`:程序的名称 (默认值: os.path.basename(sys.argv[0]))
`description`: 要在参数帮助信息之前显示的文本(默认:无文本)
`epilog`:要在参数帮助信息之后显示的文本(默认:无文本)
`help`: 参数说明
`action`: 参数值为store_true,用于存储布尔值True和False

`action的其他参数值`:
`store`:这用于存储参数的值。 这是默认的动作
`store_true 和 store_false`:这两个动作分别用于存储 True 和 False。它们通常用于布尔标志
parser.add_argument('--foo', action='store_true')
parser.add_argument('--no-foo', action='store_false')
如果提供了 --foo 选项,args.foo 将是 True
如果提供了 --no-foo 选项,args.no_foo 将是 False

`store_const`:存储由 const 关键字参数指定的值
parser.add_argument('--foo', action='store_const', const=42)
如果提供了 --foo 选项,args.foo 将是 42。

`append`: 用于将每个参数值添加到列表中。适用于允许多次使用的选项
parser.add_argument('--foo', action='append', type=int)
如果提供了 --foo 1 --foo 2,则 args.foo 将是 [1, 2]。

`count`: 用于计算某个选项出现的次数。适用于需要记录选项出现次数的情况
parser.add_argument('--verbose', '-v', action='count', default=0)
如果用户提供了 -v,args.verbose 将是 1。如果提供了 -vvv,args.verbose 将是 3

`help`: 用于显示帮助信息并退出程序。这是默认的 --help 选项的行为
parser.add_argument('--help', action='help', help='Show this help message and exit.')

`version`:用于显示版本信息并退出程序。通常与 version 参数一起使用
parser.add_argument('--version', action='version', version='%(prog)s 1.0')