介绍
介绍
Python语言鉴于其强大的功能、稳定的性能以及友好的语法成为了受大众欢迎的编程语言,除了在图表领域、自动化测试领域以及其他领域之外,Python更多的是用来开发命令行程序。
命令行程序的参数包括命令参数和选项参数,命令参数就是一个单词或者一个词组的形式,而选项参数是通过“-”或者“--”传入的,要解析命令行参数需要针对每一个输入参数进行分析才行,这不是一件容易的事情。
还好Python提供了一个专门解析命令行参数的库getopt,今天福哥就带着大家学习如何使用getopt库来解析Python命令行程序的参数。
安装
getopt是Python默认的库,不需要单独安装,直接import即可。
命令行输入参数是存在sys.argv里的,所以除了getopt之外福哥还引入了sys库。
import getopt import sys
使用
短选项参数
短选项参数是指参数名称只有一个字母,参数以“-”开头,区分大小写。
常见的短选项参数有:y(yes)、q(quiet)、d(daemon)等等。
长选项参数
长选项参数是只参数名称是一个单词或者一个词组的形式,参数以“--”开头,区分大小写。
通常情况下,每一个短选项参数都会对应一个长选项参数,参数名称就是短选项参数字母的全称。
当然,大部分长选项参数的参数名称都是词组的形式,无法以短选项参数形式命名。
常见的长选项参数有:quiet、daemon、with-struct、use-single-mode等等。
命令行参数
普通选项参数是只参数名称是一个单词或者一个词组的形式,区分大小写。
常见的命令行参数有:install、uninstall、start、stop等等。
实践1
现在福哥要使用getopt库去解析Python命令行程序的各种参数,大家看一个例子。
Python
opts, args = getopt.getopt(sys.argv[1:], "u:h:p:", ["default-character-set=", "force="]) print(opts) print(args)
命令行
mysqldump.py -u root -h localhost -p 3306 --default-character-set=utf8mb4 --force true tfums
说明
getopt的第一个参数传入全部参数的数组,这里的sys.argv[1:]就是把系统参数数组去掉命令行自己之外的部分传入。
getopt的第二个参数是定义短选项参数的,字符串类型,一个字母是一个参数的名称,字母后面有“:”表示该参数需要给赋值。
getopt的第三个参数是定义长选项参数的,数组类型,一个元素就是一个参数的名称,元素最后有“=”表示该参数需要给赋值。
匹配之外的sys.argv的元素都会作为命令行参数。
实践2
这次我们把各种类型全部都用上,大家看看效果~~
Python
opts, args = getopt.getopt(sys.argv[1:], "yqi:e:", ["quiet", "interface=", "env="]) print(opts) print(args)
命令行
python test-getopt.py -y -q -i eth2 -e USER_ID=35 -e USER_NAME="福哥" --quiet --interface eth2 --env USER_ALIAS="鬼谷子叔叔" start tongfu.net
总结
今天福哥带着大家学习了Python的getopt库的使用技巧,getopt可以轻松实现对Python开发的命令行程序的参数进行解析,或者参数列表。