测试
新建一个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返回的是包括第一个多余的参数的其之后的所有的参数
具体的含义,可以通过执行上面的两条代码来测试一下