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

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

将所有功能整合到一个单一的脚本中,而不再依赖外部的.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. 持续迭代:根据反馈和测试结果,持续优化和迭代代码,提高其健壮性和用户友好性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kaituozhizzz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值