python 解析模块脚本_python模块之getopt(脚本参数解析)

getopt

模块用于解析脚本参数。

getopt.getopt(args, shortopts, longopts=[])

解析命令行选项及参数列表。

args:要解析的参数列表,但不包括当前执行的 python 脚本名称,一般等同于 sys.argv[1:]

shortopts:要识别的短选项字符串,如果后接 :

表示需要给定参数。如 ab:c:

,表示识别 -a

, -b

和 -c

的短选项,其中 -b

和 -c

需要后接参数。如果不需要短选项,可以设置为空字符串。

longopts:要识别的长选项列表(不包括 --

前缀),长选项参数如果后接 =

表示需要给定参数。如 ["help", "user=", "password="]

,表示识别 --help

, --user=root

, --password=123456

的长选项。

函数返回值由两个元素组成。第一个是 (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)

# ['

for option in options:

print(option)

# ('-u', 'root')

# ('-p', '')

# ('--host', '127.0.0.1')

# ('--port', '3306')

# ('--verbose', '')

# ('-D', 'test')

一旦遇到非选项参数,将停止选项解析,从该非选项参数开始的所有参数全部视为返回值中的第二个元素

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(args, shortopts, longopts=[])

和 getopt()

类似,但默认使用GNU风格的选项解析模式,这意味着选项参数和非选项参数可以混合,而 getopt()

会在遇到第一个非选项参数时停止解析。

如果shortopts的首字符为 +

,或者设置了环境变量 POSIXLY_CORRECT

,同样会在遇到第一个非选项参数时停止解析。

exception getopt.GetoptError

getopt.error

异常的别名。以下几种情况将抛出此异常: a)

参数列表中存在不能识别的选项 b)

或者某个需要传值的选项没有给定值 c)

传递了值给不需要参数的长选项。

属性 msg

和 opt

分别表示错误信息和相关选项,opt可能为空字符串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值