python中getopt函数_python getopt函数详解

getopt模块可以帮助脚本解析sys.argv的命令行参数,它遵守和Unix getopt()函数相同的约定,该模块提供两个函数和一个异常。

1. getopt.getopt(args, options[, long_options])

功能:解析命令选项和参数列表

args: 要解析的参数列表,传入命令行参数要传入sys.argv[1:]

options: 由打算获取的选项字母组成的字符串,要获得某个选项的值,需要在代表该选项的字母后加冒号’:’

如 -a 1000 -b 123 -d onestraw.net

1)如果想获得3个选项的值,options=”a

1f171.pngd”

2)此时,不能只获得后面选项的值,如”abd:”,这样是错误的

3)但是可以只获得前面选项的值,如”a:bd”,也可以用”a:b”,但不能是”a:”

有一点和Unix GNU getopt()函数,一个非选项参数后面,所有的参数都被认为是非选项参数

options = “a:bd:”和options = “a:bd”效果一样,都得不到选项d的值

如果参数列表为 -a -b 123 -d onestraw.net

如果要获得选项a的值,它不会返回null, 会返回-b

>>> args = "-a 1000 -b 123 -d onestraw.net".split()

>>> args

['-a', '1000', '-b', '123', '-d', 'onestraw.net']

>>> getopt.getopt(args,'a:b:d:')

([('-a', '1000'), ('-b', '123'), ('-d', 'onestraw.net')], [])

>>> getopt.getopt(args,'a:bd:')

([('-a', '1000'), ('-b', '')], ['123', '-d', 'onestraw.net'])

>>> getopt.getopt(args,'a:bd')

([('-a', '1000'), ('-b', '')], ['123', '-d', 'onestraw.net'])

>>> getopt.getopt(args,'ab:d')

([('-a', '')], ['1000', '-b', '123', '-d', 'onestraw.net'])

>>>

long_options:是getopt函数的可选参数,它必须是一个列表

如果命令行输入参数

–condition=send –srcIP=10.10.10.10 –dstIP=20.20.20.20

(等价于 –condition send –srcIP 10.10.10.10 –dstIP 20.20.20.20)

想要获得这三个长选项的值

long_options=[“condition=”,”srcIP=”,”dstIP=”]

(注意,不需要写’–’,但要写上’=’)

long_options会根据前缀最大匹配原则搜索参数列表,也就是说有时候在命令行中选项输入不完整也能正常传入参数

假设选项只有3个,输入

–condition=send –srcIP=10.10.10.10 –dstIP=20.20.20.20

和输入

–c=send –s=10.10.10.10 –d=20.20.20.20

使用 long_options=[“condition=”,”srcIP=”,”dstIP=”]得到的结果一样

(但是当结果不唯一时,就会报错,小心使用)

>>> largs="--c=send --s=10.10.10.10 --d=20.20.20.20".split()

>>> getopt.getopt(largs,'',["condition=","srcIP=","dstIP="])

([('--condition', 'send'), ('--srcIP', '10.10.10.10'), ('--dstIP', '20.20.20.20')], [])

>>>

返回值:

getopt()函数的返回值是一个元组,包括两个list,第一个list是根据选项得到的如(option, value)这样的结果,第二个list是参数列表args解析剩余的部分

2. getopt.gnu_getopt(args, options[, long_options])

它和上面的getopt()一样,除去限制:一个非选项参数后面,所有的参数都被认为是非选项参数

3. exception getopt.GetoptError

当getopt()函数执行出错时,就会抛出该异常。

4. exception getopt.error

GetoptError的别名,为了向后兼容。

参考http://docs.python.org/2/library/getopt.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值