getopt
模块用于解析脚本参数。python
解析命令行选项及参数列表。sql
args:要解析的参数列表,但不包括当前执行的python脚本名称,通常等同于sys.argv[1:]
。函数
shortopts:要识别的短选项字符串,若是后接:
表示须要给定参数。如ab:c:
,表示识别-a
, -b
和-c
的短选项,其中-b
和-c
须要后接参数。若是不须要短选项,能够设置为空字符串。命令行
longopts:要识别的长选项列表(不包括--
前缀),长选项若是后接=
表示须要给定参数,不支持可选参数。如["help", "user=", "password="]
,表示识别--help
, --user=root
, --password=123456
的长选项。code
函数返回值由两个元素组成。第一个是(option, value)
元组的列表,第二个是args剥离短选项及其参数和长选项及其参数以后剩余的参数列表。(option, value)
元组中的option表示包含-
或--
前缀的选项,value表示该option对应的参数,能够为空字符串表示无参数。字符串
import getopt # 模拟向MySQL的test库导入tb_country.sql的命令行 args = "-uroot -p --host=127.0.0.1 --port=3306 --verbose -Dtest < tb_country.sql".split() options, arg = getopt.getopt(args, "u:pD:", ["host=", "port=", "verbose"]) print(arg) # ['<', 'tb_country.sql'] for option in options: print(option) # ('-u', 'root') # ('-p', '') # ('--host', '127.0.0.1') # ('--port', '3306') # ('--verbose', '') # ('-D', 'test')
一旦遇到非选项参数,将中止选项解析,从该非选项参数开始的全部参数所有视为返回值中的第二个元素get
import getopt args = "-a root 123456 -b --opt1 --opt2".split() options, arg = getopt.getopt(args, "ab", ["opt1", "opt2"]) print(arg) # ['root', '123456', '-b', '--opt1', '--opt2'] print(options) # [('-a', '')]
和getopt()
相似,但默认使用GNU风格的选项解析模式,这意味着选项参数和非选项参数能够混合,而getopt()
会在遇到第一个非选项参数时中止解析。it
若是shortopts的首字符为+
,或者设置了环境变量POSIXLY_CORRECT
,一样会在遇到第一个非选项参数时中止解析。io
getopt.error
异常的别名。如下几种状况将抛出此异常:a)
参数列表中存在不能识别的选项b)
某个须要传值的选项没有给定值c)
传递了值给不须要参数的长选项。test
属性msg
和opt
分别表示错误信息和相关选项,opt可能为空字符串。