同福

Python命令行参数getopt的使用技巧【20220401】

介绍

介绍

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

home/topic/2022/0402/11/647f2f2cf08bf6f5372976c53a8a2b1f.png

说明

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

home/topic/2022/0402/11/77a4ac70e19be469ff53fd03e38dc619.png

总结

今天福哥带着大家学习了Python的getopt库的使用技巧,getopt可以轻松实现对Python开发的命令行程序的参数进行解析,或者参数列表。