getopt例子

简介: (本例基于win7 + python3.4) import getopt, sys ''' getopt 模块专门用来处理命令行参数 函数 getopt(args, shortopts, longopts = []) 参数 args 一般是sys.

(本例基于win7 + python3.4)

import getopt, sys
'''
getopt 模块专门用来处理命令行参数

函数
getopt(args, shortopts, longopts = [])

参数
    args       一般是sys.argv[1:]
    shortopts  短格式 (-) 
    longopts   长格式(--) 

如:
options, args = getopt.getopt(sys.argv[1:], "hp:i:", ["help", "ip=", "port="])

参数分析:
sys.argv[1:]
    --- sys.argv[0]  第一个参数,是脚本文件名
    --- sys.argv[1:] 第二个及后面的参数,是脚本文件运行所需的参数

"hp:i:"
    短格式 (shortopts)
    --- h 后面没有冒号:表示后面不带参数
    --- p:和 i:后面有冒号表示后面需要参数

["help", "ip=", "port="]
    长格式 (longopts)
    --- help后面没有等号=,表示后面不带参数
    --- 其他两个有等号=,表示后面需要参数

options
    返回值
    --- 是个包含元祖的列表,每个元组是分析出来的格式信息,比如 [('-i','127.0.0.1'),('-p','80')] ;

args
    返回值
    ---是个列表,包含那些没有'-'或'--'的参数,比如:['hello','world','you']

注意:定义命令行参数时,要先定义带'-'选项的参数,再定义没有'-'的参数


使用示例:
 $ python test.py -i 127.0.0.1 -p 80 hello world you

 $ python test.py --ip=127.0.0.1 --port=80 hello world you
'''
def usage():
    print('Usage:')
    print('     -h --help')
    print('     -i --ip')
    print('     -p --port')
    print('Example:')
    print('     $ python test.py -i 127.0.0.1 -p 80 hello world')
    print('     $ python test.py --ip=127.0.0.1 --port=80 hello world')

try:
    options, args = getopt.getopt(sys.argv[1:], "hp:i:", ["help", "ip=", "port="])
except getopt.GetoptError as err:
    print('Error:')
    print('    ', str(err))
    usage()
    sys.exit(2)

for opt, value in options:
    if opt in ("-h", "--help"):
        usage()
    elif opt in ("-i", "--ip"):
        print('ip:', value)
    elif opt in ("-p", "--port"):
        print('port:', value)

for value in args:
    print(value)

 

【运行效果图】

目录
相关文章
|
7月前
|
存储 编译器 项目管理
深入探索 CMake:揭秘非常规特殊变量${ARGN},${ARGV},${ARGV0}, ${ARGV1}等等
深入探索 CMake:揭秘非常规特殊变量${ARGN},${ARGV},${ARGV0}, ${ARGV1}等等
153 2
|
7月前
|
程序员 编译器 C语言
main函数,printf函数,和库函数
main函数,printf函数,和库函数
60 1
|
7月前
|
容器
常用库函数的用法——memset() / swap() / reverse() / unique()函数的用法
常用库函数的用法——memset() / swap() / reverse() / unique()函数的用法
48 0
|
程序员 C语言
“main函数”以及“printf函数和库函数”的理解
“main函数”以及“printf函数和库函数”的理解
81 0
“main函数”以及“printf函数和库函数”的理解
|
存储 C语言
【C语言】 --- getopt()函数的使用简析
【C语言】 --- getopt()函数的使用简析
156 0
|
监控 NoSQL C语言
研发中学习C(file函数、宏定义、gdb调试、strstr函数)
研发中学习C(file函数、宏定义、gdb调试、strstr函数)
146 0
|
物联网 Linux C语言
Execl 函数|学习笔记
快速学习 Execl 函数
Execl 函数|学习笔记