python模块之getopt

ops/2024/10/20 16:16:58/
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对应的参数,可以为空字符串表示无参数。

python">python tag_sync_batch.py --dt="20240829" --model_db="db_name" --model_table="table_name" --tag_create_type="2" --task_no="1"

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

执行 tag_sync_batch.py 入口

FindArgs __init__

python"># 入参解析
class FindArgs(object):def __init__(self, input_args: list):self.input_args = input_argsself.shortopts = "h"self.longopts = ["dt=","test_flag=", "model_db=", "model_table=", "tag_id=","tag_create_type=", "task_no="]try:self.options, self.args = getopt.getopt(self.input_args[0:],self.shortopts,self.longopts)for self.name, self.value in self.options:# print(self.name, self.value)if self.name in ("-h"):self.usage()else:# print("self." + self.name.lstrip("--") + ' = "' + self.value + '"')exec("self." + self.name.lstrip("--") + ' = "' + self.value + '"')# 日期简单校验规则if re.match("^\d{8}$", self.dt):passelse:raise Exception('{dt} is not \d{8} .')# 模型与tag_id参数必须二选一,有tag_id 优先tag_id 生效.# 都不传则选择所有标签try:self.tag_idexcept AttributeError:# tag_id 未定义 默认变量self.tag_id = "all"try:# model_table model_db 必须同时存在self.model_table and self.model_dbexcept AttributeError:# tag_id不存在时   model_table model_db 默认变量self.model_db = "all"self.model_table = "all"else:# tag_id存在时 默认变量self.model_db = "one"self.model_table = "one"# 标签类型默认是模型创建try:self.tag_create_typeexcept AttributeError:self.tag_create_type = "2"try:self.task_noexcept AttributeError:logging.info(" --task_no is not exists ")logging.info(" --task_no args [ 1-清理hive历史数据 | 2-hive横表转纵表 | 3-hive2clickhouses | 4-tag_value2data] ")raise -1except  getopt.GetoptError:raisesys.exit()

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

getopt()类似,但默认使用GNU风格的选项解析模式,这意味着选项参数和非选项参数可以混合,而getopt()会在遇到第一个非选项参数时停止解析。

如果shortopts的首字符为+,或者设置了环境变量POSIXLY_CORRECT,同样会在遇到第一个非选项参数时停止解析。

exception getopt.GetoptError

getopt.error异常的别名。以下几种情况将抛出此异常:a)参数列表中存在不能识别的选项b)某个需要传值的选项没有给定值c)传递了值给不需要参数的长选项。

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


http://www.ppmy.cn/ops/119813.html

相关文章

滚雪球学Oracle[3.1讲]:Oracle SQL基础

全文目录: 前言0. 上期回顾1. SQL语言基础1.1 SQL语法的全面解析1.2 子查询与嵌套查询的优化策略1.3 SQL语句的执行计划与调优分析 2. 查询与数据操作基础2.1 复杂查询的优化:索引与查询重写2.2 DML操作中的锁定机制与并发控制2.3 批量数据处理的最佳实践…

【qt】QQ仿真项目1

一览全局: QQ仿真项目 一.创建项目添加资源文件二.创建数据库三.自定义标题栏Qt类四.加载样式表标题栏按钮的搭配五.标题栏实现移动窗体六.标题栏按钮连接信号槽七.标题栏双击最大化和还原八.基类窗口实现标题栏按钮信号九.重写基类窗口绘图事件确保设置样式表生效十.用户登录界…

基于Hive和Hadoop的共享单车分析系统

本项目是一个基于大数据技术的共享单车分析系统,旨在为用户提供全面的单车使用信息和深入的出行行为分析。系统采用 Hadoop 平台进行大规模数据存储和处理,利用 MapReduce 进行数据分析和处理,通过 Sqoop 实现数据的导入导出,以 S…

大数据实时数仓Hologres(四):基于Flink+Hologres搭建实时数仓

文章目录 基于FlinkHologres搭建实时数仓 一、使用示例 二、方案架构 1、架构优势 2、Hologres核心优势 三、实践场景 四、项目准备 1、创建阿里云账号AccessKey 2、准备MySQL数据源 五、构建实时数仓​编辑 1、管理元数据 2、构建ODS层 2.1、创建CDAS同步作业OD…

PostgreSQL 中的公用表表达式(CTE)学习指南

在现代数据库管理中,SQL 查询的复杂性不断增加,尤其是在处理多层嵌套查询和递归查询时。为了提高查询的可读性和维护性,PostgreSQL 提供了一种强大的工具——公用表表达式(Common Table Expressions,简称 CTE&#xff…

【Docker】01-Docker常见指令

1. Docker Docker会下载镜像,运行的时候,创建一个隔离的环境,称为容器。 docker run -d \ # 创建并运行一个容器,-d表示后台运行 --name mysql \ # 容器名称-p 3307:3306 \ # 端口映射,宿主机端口映射到容器端口-e TZ…

视频美颜SDK与直播美颜工具API是什么?计算机视觉技术详解

今天,小编将深入探讨视频美颜SDK与直播美颜工具API的概念及其背后的计算机视觉技术。 一、视频美颜SDK的概念 视频美颜SDK是一套用于开发实时美颜效果的工具集,开发者可以利用它在视频流中实现面部特征的优化。这些SDK通常提供了一系列功能&#xff0c…

《征服数据结构》哈夫曼树(Huffman Tree)

摘要: 1,哈夫曼树的介绍 2,哈夫曼树的构造 3,哈夫曼树带权路径长度计算 4,哈夫曼树的编码 5,哈夫曼树的解码 1,哈夫曼树的介绍 哈夫曼树(Huffman Tree)也叫霍夫曼树,或者赫夫曼树&am…