plugin_system.md 2.7 KB

LST数据处理插件系统

本插件系统允许用户为自定义数据格式开发数据处理插件。插件处理的结果将被合并到主数据文件中。

插件系统概述

LST数据处理插件系统提供了一种灵活的方式来扩展数据处理功能,无需修改主程序代码。用户可以开发处理特定数据格式的插件,系统会自动加载并执行这些插件,并将处理结果合并到最终的数据文件中。

开发新插件

要创建新的数据处理插件,需要:

  1. plugins 目录下创建新的 Python 文件
  2. 导入并继承 CustomDataProcessorPlugin 基类
  3. 实现所有必需的方法

插件接口

每个插件必须实现以下方法:

def can_handle(self, zip_path: Path, folder_name: str) -> bool:
    """判断插件是否可以处理指定文件夹中的数据"""
    pass

def process_data(self, zip_path: Path, folder_name: str, output_dir: Path) -> Optional[pd.DataFrame]:
    """处理数据并返回处理后的DataFrame"""
    pass

def get_required_columns(self) -> Dict[str, Any]:
    """返回插件将提供的列及其数据类型"""
    pass

以下是一个处理自定义数据的示例插件: ‘’‘ from pathlib import Path from typing import Dict, Any, Optional import pandas as pd from plugins.plugin_interface import CustomDataProcessorPlugin

class MyCustomDataProcessor(CustomDataProcessorPlugin):

def can_handle(self, zip_path: Path, folder_name: str) -> bool:
    """判断插件是否可以处理指定文件夹中的数据"""
    return folder_name.startswith('my_custom_data_')

def get_required_columns(self) -> Dict[str, Any]:
    """返回插件将提供的列及其数据类型"""
    return {
        'simTime': float,      # 必需
        'simFrame': int,       # 必需
        'playerId': int,       # 必需
        'customField1': str,   # 自定义字段
        'customField2': float  # 自定义字段
    }

def process_data(self, zip_path: Path, folder_name: str, output_dir: Path) -> Optional[pd.DataFrame]:
    """处理数据并返回处理后的DataFrame"""
    try:
        # 1. 从zip中提取数据
        # 2. 处理数据
        # 3. 创建包含必需列的DataFrame
        df = pd.DataFrame({
            'simTime': [...],
            'simFrame': [...],
            'playerId': [...],
            'customField1': [...],
            'customField2': [...]
        })
        return df
    except Exception as e:
        print(f"处理数据时出错: {e}")
        return None

‘’‘