python_getopt()_命令行参数解析

测试

新建一个argtest.py文件,输入以下代码:

import sys
print(sys.argv)

随后在命令提示符中执行python argtest.py a b c 1 "a b" [1,2] [a b]
会输出

['.\\argtest.py', 'a', 'b', 'c','1','a b', '[1,2]', '[a', 'b]']

可以看出来参数的提取规则:

  • 第一个参数为文件名
  • 参数以空格作为分隔符提取
  • 允许字符串作为参数
  • 字符串中间允许空格

以上几条规则足够满足制定参数的所有要求


sys.argv

如果是普通的应用,那么只需要对sys.argv进行处理就可以了,它是一个list类型的元素,排除掉第一个元素,其他的都是参数。


getopt()

Python提供了一个用来解析参数的库getopt,用于方便的处理规范形式的参数。

最简单的使用方式:

import getopt
opts, args = getopt.getopt(argv,"a:b:c",["d=","e="])#第一类

getopt()方法接收三个参数,第一个参数是命令行参数,第二个参数是短选项,第三个参数是长选项

短选项只能以一个字母为单位,带冒号表示该选项接收一个参数,不带冒号表示该选项不接收参数。

长选项跟短选项没有必然的联系,但经常是用长选项用来表示短选项的一个意义。

上面的代码就是一个无联系的例子
长选项的使用方式为--d=fiil长选项的中间不允许出现任何空格,(除了字符串,如--d="a b")


解析

argv = ["-a","1","-b","2","-c","4","--d","5","--f"]
#argv = ["-a","1","-b","2","3","-c","4","--d","5","--f"]
opts, args = getopt.getopt(argv,"a:b:c",["d=","e=","f"])

经过上面的命令后,opts返回的是一个元组列表,args返回的是包括第一个多余的参数的其之后的所有的参数

具体的含义,可以通过执行上面的两条代码来测试一下

猜你喜欢

转载自blog.csdn.net/sailist/article/details/80226932