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

栏目: Python · 发布时间: 7年前

内容简介:解析命令行选项及参数列表。args:要解析的参数列表,但不包括当前执行的python脚本名称,一般等同于

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)  
# ['<', 'tb_country.sql']

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可能为空字符串。


以上所述就是小编给大家介绍的《python模块之getopt(脚本参数解析)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

结网@改变世界的互联网产品经理

结网@改变世界的互联网产品经理

王坚 / 人民邮电出版社 / 2013-5-1 / 69.00元

《结网@改变世界的互联网产品经理(修订版)》以创建、发布、推广互联网产品为主线,描述了互联网产品经理的工作内容,以及应对每一部分工作所需的方法和工具。产品经理的工作是围绕用户及具体任务展开的,《结网@改变世界的互联网产品经理(修订版)》给出的丰富案例以及透彻的分析道出了从发现用户到最终满足用户这一过程背后的玄机。新版修改了之前版本中不成熟的地方,强化了章节之间的衔接,解决了前两版中部分章节过于孤立......一起来看看 《结网@改变世界的互联网产品经理》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码