类静态方法将python 中把不同脚本融合为一个大脚本 互不影响的方法!首发 以便于维护和扩展。

news2024/12/24 2:19:54

一般遇见想要方便管理或者集合的大脚本 我们管理很麻烦 用这个方法 无论是什么方面的脚本 都能放在一个大脚本中运行 互不干扰。

将所有功能整合到一个单一的脚本中,而不再依赖外部的.py文件,你可以将rendering.pysercurity.py中的函数代码直接复制到combined_script.py中,并用类和静态方法来组织它们。

首先 给一个案例:

这是第一个脚本:

rendering.py:

import os

# 渲染模块的全局变量
__path__ = os.getcwd()
template_path = os.path.join(__path__, 'template')

def get_logger():
    logger_path = os.path.join(template_path, 'logger.conf')
    print(f"Logger path: {logger_path}")

def main():
    # 使用全局变量的代码
    print(f"Rendering template path: {template_path}")
    get_logger()

第二个:

sercurity.py:

import os

# 安全模块的全局变量
__path__ = os.getcwd()
data_path = os.path.join(__path__, 'data')

def extract_data_from_word(docx_filename):
    print(f"Extracting data from {docx_filename} to {data_path}")

def main():
    # 使用全局变量的代码
    print(f"Sercurity data path: {data_path}")
    extract_data_from_word("example.docx")

模块

全局变量

所有函数

import os

# 定义全局变量
__path__ = os.getcwd()
template_path = os.path.join(__path__, 'template')
data_path = os.path.join(__path__, 'data')

# 假设我们将rendering.py和sercurity.py中的函数直接复制到这里
def get_logger():
    logger_path = os.path.join(template_path, 'logger.conf')
    print(f"Logger path: {logger_path}")

def extract_data_from_word(docx_filename):
    print(f"Extracting data from {docx_filename} to {data_path}")

def rendering_main():
    print("Rendering main function executed")
    main()  # 调用rendering模块的main函数
    get_logger()

def sercurity_main():
    print("Sercurity main function executed")
    main()  # 调用sercurity模块的main函数
    extract_data_from_word("example.docx")

# 使用类和静态方法组织代码
class ModuleRunner:
    @staticmethod
    def run_rendering():
        print("运行渲染模块")
        rendering_main()

    @staticmethod
    def run_sercurity():
        print("运行安全模块")
        sercurity_main()

# 脚本入口点
if __name__ == '__main__':
    # 根据命令行参数决定执行哪个模块的功能
    if len(sys.argv) > 1:
        module_to_run = sys.argv[1]
        if module_to_run == 'rendering':
            ModuleRunner.run_rendering()
        elif module_to_run == 'sercurity':
            ModuleRunner.run_sercurity()
        else:
            print(f"未知的模块指定: {module_to_run}")
            print("请指定要运行的模块: 'rendering' 或 'sercurity'。")
    else:
        print("请指定要运行的模块: 'rendering' 或 'sercurity'。")

首先定义了所有全局变量,然后复制了rendering.pysercurity.py中的函数实现。我们使用ModuleRunner类来组织这些模块的入口点。这样,无论何时调用run_renderingrun_sercurity方法,它们都会使用已经定义的全局变量。

运行命令:

要点总结:

  1. 全局变量定义:首先定义所有需要在脚本中共享的全局变量。例如,工作目录路径和模板路径。

  2. 函数复制:将原脚本中定义的函数复制到新脚本中,确保所有函数都能访问到全局变量。

  3. 避免命名冲突:如果不同脚本中有同名函数,需要重命名以避免冲突。

  4. 组织代码:使用类和静态方法来组织不同模块的代码。每个模块的功能封装在对应的类方法中。

  5. 入口点控制:在脚本底部使用if __name__ == '__main__':来控制脚本的入口点,根据命令行参数决定执行哪个模块的功能。

  6. 删除原脚本的入口点:在整合代码时,删除原脚本中的if __name__ == '__main__':块,以防止在导入模块时执行代码。

  7. 提供清晰的用户指导:在脚本的入口点提供清晰的中文提示信息,指导用户如何通过命令行参数选择要执行的模块。

  8. 测试:在整合后,对每个模块的功能进行测试,确保它们在新环境中正常工作。

  9. 文档化:更新代码的注释和文档,说明整合后的脚本如何工作,以及如何使用命令行参数。

  10. 持续迭代:根据反馈和测试结果,持续优化和迭代代码,提高其健壮性和用户友好性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1960731.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

centos7 安装minio

文章目录 下载 Minio 二进制文件配置 Minio将Minio设置成服务 配置Systemd服务启动创建minio变量文件:/etc/default/minio创建Service File:/etc/systemd/system/minio.service设置开启自启动 Nginx反向代理nginx配置 下载 Minio 二进制文件 cd /usr/lo…

VLM系列文章6-Cambrian-1

以视觉为中心的多模态大模型Cambrian-1,主要考虑的是MLLM中视觉模型的影响。 1、评估 LLM 还是 MLLM?:我们在使用 23 种不同的视觉主干训练的 MLLM 中比较了视觉禁用和视觉启用设置之间的性能。我们的研究结果表明,MMMU 和 AI2D 等…

有没有视频ai换脸的软件?

AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频百万播放量https://aitools.jurilu.com/ 发现大家对AI换脸都非常感兴趣,AI换脸一般的步骤是:上传自己的照片→选择不同的风格→制作出被替换的GIF图或视…

安卓修改logo与开机动画后不显示问题解决

问题描述 替换安卓logo与开机动画bootanimation.zip画面是花的或黑的 修复步骤 手动替换安卓framework中的开机logo后显示异常排查 在电脑上打开logo图片, 查看分辨率, 再adb shell wm size查看设备的分辨率,要求二者一致.电脑上右键点击logo图片,查看属性,要确保它的位深度…

数据结构与算法 - 二分查找

一、二分查找 二分查找算法也称折半查找,是一种非常高效的工作于有序数组的查找算法。 时间复杂度 最坏情况:O(log n)最好情况:如果待查找元素恰好在数组中央,只需要循环一次O(1) 空间复杂度 递归->O(log n)&a…

暑期C++ printf和scanf的平替

有任何不懂的问题可以评论区留言&#xff0c;能力范围内都会一一回答 C中也有专门的输入和输出的方法 首先我们需要一个头文件&#xff0c;也就是#include<iostream> 然后根据我们命名空间的知识可知这个地方如果我们要使用必须先展开 可以全部展开比如using namespa…

K8s大模型算力调度策略的深度解析

随着大数据和人工智能技术的飞速发展&#xff0c;Kubernetes&#xff08;简称K8s&#xff09;作为容器编排的领军者&#xff0c;在支撑大规模模型训练和推理方面扮演着越来越重要的角色。在大模型算力的调度过程中&#xff0c;如何高效、合理地分配和管理资源成为了一个亟待解决…

实验2-5-1 求排列数

本题要求实现一个计算阶乘的简单函数&#xff0c;使得可以利用该函数&#xff0c;根据公式 算出从n个不同元素中取出m个元素&#xff08;0<m≤n&#xff09;的排列数。 函数接口定义&#xff1a; double fact( int n );其中n是用户传入的参数&#xff0c;函数返回n的阶乘。…

数据分析概要【数据分析---偏企业】

各位大佬好 &#xff0c;这里是阿川的博客&#xff0c;祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 数据分析概要前 必看 Python 初阶 Python–语言基础…

[数据集][目标检测]易拉罐底部缺陷检测数据集VOC+YOLO格式1122张5类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1122 标注数量(xml文件个数)&#xff1a;1122 标注数量(txt文件个数)&#xff1a;1122 标注…

企业获客重要途径-大数据获客系统

企业获客的重要途径之一是通过大数据获客系统。这一系统利用大数据技术和分析方法&#xff0c;帮助企业更精准地获取客户&#xff0c;提高市场营销的效率和效果。 所以整理了以下是大数据获客系统作为企业获客重要途径的详细阐述&#xff1a; 一、大数据获客系统的定义与功能…

永磁同步电机谐波抑制算法(8)——基于自适应带宽扩张状态观测器的采样电流偏置误差补偿办法

1.前言 在上一期内容中&#xff0c;已经介绍了采样电流的偏置误差the current measurement offset error /CMOE&#xff08;这个采样电流偏置误差通常认为是直流DC偏置&#xff0c;所以其在dq电流中会造成一次谐波&#xff09;。如果没看过上一期内容&#xff0c;那先需要补一…

SSRF-labs-master靶场

目录 file_get_content.php sql_connect.php download.php dns-spoofing.php dns_rebinding.php 访问链接 http://127.0.0.1/SSRF/# file_get_content.php 在编程语言中&#xff0c;有一些函数可以获取本地保存文件的内容。这些功能可能能够从远程URL以及本地文件 如果没…

C++第二十九弹---C++继承机制深度剖析(上)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1.继承的概念及定义 1.1继承的概念 1.2 继承定义 1.2.1定义格式 1.2.2继承关系和访问限定符 1.2.3继承基类成员访问方式的变化 2.基类和派生…

常见的手电筒芯片功能模式选型 单路双路可用

常见的手电筒芯片如下 单双路输出 带充电功能和不带充电功能的 外围结构简单、无需多余的元器件 搜恒森宇电子了解更多相关功能&#xff01; 首页

Spring随笔

Spring随笔 BeanFactory和ApplictionContextbean增强 AutowiredAnnotationBeanPostProcessor工厂增强 BeanFactory和ApplictionContext BeanFactory装载了bean实例&#xff0c;一个容器&#xff0c;提供了对bean的增删改查 ApplictionContext继承了factory&#xff0c;除此之外…

MyBatis基础配置

一、M y B a t i s 配 置 文 件 1.为什么学习MyBatis配置文件 功能&#xff1a;构建SqlSessionFactory的依据。 意义&#xff1a;MyBatis最为核心的内容&#xff0c;对MyBatis的使用影响很大。 注意&#xff1a;配置文件的层次顺序不能颠倒&#xff0c;一旦颠倒会出现异常。 …

NLP与搜广推常见面试问题

1 auc指标 AUC的两种意义 一个是ROC曲线的面积另外一个是统计意义。从统计学角度理解&#xff0c;AUC等于随机挑选一个正样本和负样本时&#xff0c;模型对正样本的预测分数大于负样本的预测分数的概率。下图为搜广推场景下的一个计算auc的例子

如何查找OBS的终端节点(Endpoint)和访问域名

目录 一、参考链接二、终端节点&#xff08;Endpoint&#xff09;三、访问域名 一、参考链接 https://support.huaweicloud.com/productdesc-obs/obs_03_0152.html 二、终端节点&#xff08;Endpoint&#xff09; OBS为每个区域提供一个终端节点&#xff0c;终端节点可以理解…

JVM性能调优全指南:高流量电商系统的最佳实践

1.G1(Garbage-First) 官网: G1 Garbage Collection G1收集器是Java 7中引入的垃圾收集器,用于替代CMS(Concurrent Mark-Sweep)收集器。它主要针对大内存、多核CPU环境下的应用场景,具有以下特点: 分代收集:G1仍然保留了分代的概念,但新生代和老年代不再是物理隔离的,…