资讯专栏INFORMATION COLUMN

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

lwx12525 / 922人阅读

摘要:模块用于解析脚本参数。如果不需要短选项,可以设置为空字符串。函数返回值由两个元素组成。元组中的表示包含或前缀的选项,表示该对应的参数,可以为空字符串表示无参数。属性和分别表示错误信息和相关选项,可能为空字符串。

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)传递了值给不需要参数的长选项。

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43722.html

相关文章

  • 搭建Pythonargv的4种比较常见方式方法

      此篇文章主要是阐述了搭建Pythonargv的4种比较常见方式方法,文章内容紧扣主题进行详尽的基本介绍,具有很强的实用价值,务必的朋友可以学习一下。  序言  小伙伴们好,在平时的撰写Python脚本制作的过程当中,我们通常需要根据argv传到某些自变量主要参数,使新项目应用更加灵便便捷。  分别是:  内嵌sys.argv控制模块  内嵌argparse控制模块  内嵌getopt模块  第...

    89542767 评论0 收藏0
  • Python查询参数标准化的4种方法详细说明

      在平时的撰写Python脚本制作的过程当中,我们通常需要根据查询参数传到某些自变量主要参数,使新项目应用更加灵便便捷。本文列举了搭建Python查询参数的4种普遍方法,所需要的可以了解一下  小伙伴们好,在平时的撰写Python脚本制作的过程当中,我们通常需要根据查询参数传到某些自变量主要参数,使新项目应用更加灵便便捷  本文我们将列举出搭建Python查询参数的4种普遍方法  分别是:  内...

    89542767 评论0 收藏0
  • Python查询参数化4种方法详细说明

      在平时的撰写Python脚本制作的过程当中,我们通常需要根据查询参数传到某些自变量基本参数,使新项目应用更加灵便便捷。本文列举了搭建Python查询参数的4种普遍方法,所需要的可以了解一下小伙伴们好,在平时的撰写Python脚本制作的过程当中,我们通常需要根据查询参数传到某些自变量基本参数,使新项目应用更加灵便便捷  本文我们将列举出搭建Python查询参数的4种普遍方法  分别是:  内嵌s...

    89542767 评论0 收藏0
  • 手把手教你撸一个 Webpack Loader

    摘要:夹在中间的被链式调用,他们拿到上个的返回值,为下一个提供输入。最终把返回值和传给。前面我们说过,也是一个模块,它导出一个函数,该函数的参数是的源模块,处理后把返回值交给下一个。 文:小 boy(沪江网校Web前端工程师)本文原创,转载请注明作者及出处 showImg(https://segmentfault.com/img/remote/1460000012990131?w=1083...

    sugarmo 评论0 收藏0
  • Windows上利用Python自动切换代理IP的终极方案!

    摘要:在中,格式是,所以需要把格式统一为注册表的标准。注册表的二进制值及关键信息如下开关长度地址是否跳过本地代理地址通过在中导入文件的方式执行并立即生效。本代码可以根据需要自动设置代理。 声明下:不同于网络上千百篇方法,下文是经过各种严格测试都通过的,同时也是一个实验的过程,排除了各种不靠谱的方法。有需要的可以评论来讨论,想要源码和相关参考文献或笔记的,也可以找我。 思路及启发 先说一下我这...

    jeyhan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<