python 实现命令行参数 | KaiQ.Gu|KerwinKoo Blog

JerryXia 发表于 , 阅读 (0)

在终端中输入

vi -h

或者

vi --help

他们实现的功能是一样的,都是打印vi编辑器的帮助文档。python通过标准库getopt,对终端命令行参数进行解析,可以轻松达到以上效果。

代码举例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import sys
import getopt

__version__ = '1.0'

if __name__ == '__main__':
longargs = ['version', 'help', 'file=', 'record=']
shortargs = 'vhf:'

opts, args = getopt.getopt(sys.argv[1:], shortargs, longargs)
for opt, value in opts:
if opt in ('-v', '--version'):

print __version__

if opt in ('--help', '-h):
print 'this is a test'

if opt in ('-f', '--file'):

print 'handle file: ' + value #value is file name

if opt == '--record':
print get_records_by_date(value) #value is record content

上面例子中,longargs为长选项列表,其中=表示该长选项后必须跟有参数shortargs为短选项列表,在选项后面加:表示该短选项后必须跟有参数

函数getopt.getopt(sys.argv[1:], shortargs, longargs)表示对命令行进行解析,返回值为opts和args,含义如下:

opts 为分析出的格式信息.args 为不属于格式信息的剩余的命令行参数.其中opts 是一个两元组的列表,每个元素为:( 选项名称, 该选项参数) ,即上面举例代码中的(opt, value).如果没有选项附加参数则value为空串.所有为确保上述举例代码健全性,应该有参数的选项的value处做是否为空串判断.