使用getopt解析命令行参数

python中可以使用getopt来解析命令行参数,其定义如下:

getopt(args, shortopts, longopts=[])

其中,

  • args是要解析的参数列表
  • shortopts是短选项字符串(短选项,以-开头的选项,例如-a, -abc)
  • longopts是长选项列表(长选项,以--开头的选项,例如--x, --xyz)

getopt返回opts, args元组,opts是根据shortopts, longopts参数解析出来的(key, value)列表,

而其他剩余参数就会放到args列表中。


举例最直观:

>>> opts, args = getopt.getopt(['-a', '-b', '--xyz'], 'ab', ['xyz'])
>>> print(opts)
[('-a', ''), ('-b', ''), ('--xyz', '')]
>>> print(args)
[]
可以看到,所有解析出来的选项value都是空。


如果要告诉getopt选项有参数值,需要在shortopts, longopts中指定。

>>> opts, args = getopt.getopt(['-a', '111', '-b', '--xyz', '222'], 'a:b', ['xyz='])
>>> print(opts)
[('-a', '111'), ('-b', ''), ('--xyz', '222')]
>>> print(args)
[]
通过在短选项字符后添加冒号:,长选项字符串后添加等号=,以告知getopt相应选项后会有参数值。


参数值还可以与选项写在一起。

>>> opts, args = getopt.getopt(['-a111', '-b', '--xyz=222'], 'a:b', ['xyz='])
>>> print(opts)
[('-a', '111'), ('-b', ''), ('--xyz', '222')]

参数列表末尾不以-开头的选项,都会放到args中。

>>> opts, args = getopt.getopt(['-a', '-b', '--xyz', '111', '222'], 'ab', ['xyz'])
>>> print(args)
['111', '222']


注意有参数值和没有参数值的选项设置不要弄错,不然解析出来的结果就会出现错乱。

>>> opts, args = getopt.getopt(['-a', '-b'], 'a:b')
>>> print(opts)
[('-a', '-b')]
>>> opts, args = getopt.getopt(['-a', '-b', '--xyz'], 'ab:')
>>> print(opts)
[('-a', ''), ('-b', '--xyz')]
如上,由于指定了a/b选项有参数值,getopt就把-a/-b选项后面的选项当做了参数值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值