Python3 标准库中推荐的命令行解析模块argparse的使用示例

复制代码
import os
import argparse
import sys
import requests
import json
import subprocess
from datetime import datetime

# 定义一个装饰器,在方法执行异常时跳过执行
def skip_on_exception(func):
    def wrapper(*args, **kwargs):
        try:
            return func(*args, **kwargs)
        except Exception as e:
            print(f"Exception occurred in {func.__name__}: {str(e)}")
            # 跳过当前方法,执行下一个方法
            pass
    return wrapper

# 定义方法
@skip_on_exception
def excute_mysql_task():
    #执行mysql2las任务和las2mysql任务
    print("执行了mysql方法")

@skip_on_exception
def excute_bytehouse_ce_task():
    print("执行了bytehouse_ce方法")

@skip_on_exception
def excute_es_task():
    print("执行了es方法")

# 定义一个可以循环执行方法的嵌套方法,用来同时执行多个方法
def execute_dts_task(datasource_list):
    for datasource in datasource_list:
        print(datasource)
        task = 'excute_'+datasource +'_task'
        eval(task)




if __name__=='__main__':
    #创建了一个参数解析器对象parser,使用formatter_class 参数设置默认帮助格式
    parser=argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
    #向参数解析器中,添加命令行参数,'--datasource' 是参数的名称,--表示是个选项;nargs='+' 表示该参数可以接受一个或多个值;default='mysql' 表示如果没有提供该参数,则使用默认值 'mysql';
    parser.add_argument('--datasource',nargs='+',default='mysql',help='specify the datasource mysql bytehouse_ce es')
    #解析命令行参数,并将结果存储在args里,args.datasource 是用户提供的数据源列表
    args =parser.parse_args()
    datasource_list = args.datasource
    execute_dts_task(datasource_list)
    print('DTS任务执行完成')

以上代码编辑完成后,在terminal里执行 python3 init_env.py --help,得到执行python3 init_env.py --datasource mysql 得到

执行python3 init_env.py --datasource mysql bytehouse_ce es 得到

相关推荐
她和夏天一样热3 分钟前
【实战篇】设计模式在开发中的真实应用
java·开发语言·设计模式
TheSumSt8 分钟前
Python丨课程笔记Part2:方法论进阶部分
开发语言·笔记·python
知远同学12 分钟前
使用virtualenv 和 anaconda 创建管理虚拟环境的区别
python
微爱帮监所写信寄信14 分钟前
微爱帮监狱寄信写信小程序:深入理解JavaScript中的Symbol特性
开发语言·javascript·网络协议·小程序·监狱寄信·微爱帮
ss27322 分钟前
线程池工作机制:从任务提交到执行的完整决策流程
java·开发语言
syt_101330 分钟前
js基础之-如何理解js中一切皆对象的说法
开发语言·javascript·原型模式
山沐与山30 分钟前
【设计模式】Python状态模式:从入门到实战
python·设计模式·状态模式
yaoxin52112333 分钟前
276. Java Stream API - 使用 flatMap 和 mapMulti 清理数据并转换类型
java·开发语言·windows
Swizard35 分钟前
别让你的密钥在互联网上“裸奔”!用 python-dotenv 优雅管理你的敏感配置
python
无心水37 分钟前
【Stable Diffusion 3.5 FP8】8、生产级保障:Stable Diffusion 3.5 FP8 伦理安全与问题排查
人工智能·python·安全·docker·stable diffusion·ai镜像开发·镜像实战开发