动态调用子流程-作者:【小可耐教你学影刀RPA】

官方已经出指令了 不用这么麻烦了

功能说明

影刀提供的调用流程,必须要开发期就确定调用的子流程名称,如下图:

期望:

调用流程名可以参数化

实现方案

1. 编写调用模块

第一步:新建python流程,且为流程添加参数

  • 新建 invoke.py文件

  • 入参:流程名、流程参数;出参:调用结果,见下图:

第二步,在invoke.py中编写逻辑,如下:

# 使用提醒:
# 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能
# 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能
# 3. 当此模块作为流程独立运行时执行main函数
# 4. 可视化流程中可以通过"调用模块"的指令使用此模块

import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
import importlib 
import os 
import json
import xbot_visual

def main(args):
    flow_name = args.get('流程名',None)
    params = args.get('流程参数',{})
    if flow_name is None:
        raise ValueError('流程名称必须指定')
    
    #调用流程
    folder = source_folder()
    process_name = find_process_name(folder, flow_name)
    #处理回参
    outputs = parse_output(folder, process_name)
    args['调用结果'] = run(process_name, params, outputs)


def run(module_name, inputs, outputs):
    if outputs is not None:
        prargs = {}.fromkeys(outputs)
    else:
        prargs = None
    
    if inputs is not None:
        for key, value in inputs.items():
            prargs[key] = value

    mod = importlib.import_module(f"..{module_name}", __name__)
    mod.main(prargs)

    #取返回值
    results = {}
    if outputs and prargs:
        for item in outputs:
            results[item] = prargs.get(item,None)
        return results

def find_process_name(source_folder, flowname):
    # parse package.json
    with open(os.path.join(source_folder,'package.json'),'r',encoding='utf-8') as f:
        json_obj = json.loads(f.read())
        flows = json_obj['flows']
        for flow in flows:
            if flow['name'] == flowname:
                filename = flow['filename']
                if filename == 'main':
                    raise ValueError('无法调用主流程')
                return filename
    raise ValueError(f'未找到名为【{flowname}】的流程,请检查!')

def parse_output(source_folder,process_name):
    flow_file_name = os.path.join(source_folder,'.dev',f'{process_name}.flow.json')
    if not os.path.exists(flow_file_name):
        raise ValueError(f'未找到名为【{process_name}】的流程文件,请检查!')  #一般不会找不到,除非文件损坏

    outputs = []
    with open(flow_file_name,'r',encoding='utf-8') as f:
        json_obj = json.loads(f.read())
        params = json_obj["parameters"]
        for p in params:
            if p['direction'] == 'Out':
                outputs.append(p['name'])
    return outputs

def source_folder():
    return os.path.dirname(__file__)

2. 如何调用

假定有这样的一个流程:

调用前,准备流程名和参数

调用后,获取流程的回参

关于作者:持续分享干货,不断授人以渔,不辍收集软件,不停成长进阶,致力成为超有用的号主。全网同名【小可耐教你学RPA】,速来关注,与大家一同快乐成长、努力学习! 涉及领域广泛,包括 RPA 技能、生活经验、法律学习、科普文章、自媒体经验、理财知识、保险、人生思考、反赌、反诈骗等。 文章更新频率一切随缘。 赠人玫瑰,手有余香。爱分享,爱思考。ps:收集的教程和思路可能来源互联网,我这边只做整合,如有侵权及时联系,方便下架!

<think>好的,用户问的是影刀如何调用pandas库。首先,我需要确认影刀是什么。影刀影刀RPA)是一款自动化流程软件,类似于UiPath或者国内的按键精灵,主要用于自动化办公任务。用户可能想通过影刀来自动处理Excel或数据,所以需要用到pandas库进行数据处理。 接下来,我得思考影刀是否支持Python脚本的执行。因为pandas是Python的库,如果影刀支持运行Python代码,那么调用pandas就有可能。需要查看影刀的官方文档或者社区是否有相关功能。根据我的了解,影刀的“Python”指令可以直接执行Python代码,所以用户需要先在影刀中安装Python环境,或者确保影刀使用的Python环境中已经安装了pandas。 然后,用户可能遇到的问题包括如何在影刀中配置Python环境,如何安装pandas,以及如何传递数据给pandas处理后再返回结果到影刀流程中。需要分步骤说明这些过程,比如安装Python环境、安装pandas、编写Python脚本、在影刀调用脚本并处理数据。 还要考虑用户的使用场景,比如他们可能是在处理Excel文件,需要读取数据、清洗、分析,然后将结果输出。这时候在影刀中使用pandas就能高效完成这些任务。可能需要给出具体的例,比如读取Excel文件,处理数据,保存结果。 另外,需要注意影刀版本是否支持Python指令,可能有些旧版本不支持,需要用户升级。同时,提醒用户如果遇到模块未找到的错误,如何解决,比如检查pandas是否安装正确,环境路径是否正确。 最后,总结步骤,确保用户能够按照指引一步步操作,同时强调注意事项和常见问题的解决方法。确保回答结构清晰,步骤明确,用户能够顺利调用pandas库完成他们的自动化任务。</think>影刀调用Pandas库的实现步骤如下: 一、环境准备 1. 确保影刀内置Python环境已激活 - 影刀RPA(v6.0+)默认集成Python 3.8环境 - 通过顶部菜单栏「设置」→「选项设置」→「Python配置」验证 2. 安装Pandas库 - 打开影刀设计器的「Python包管理」 - 在搜索栏输入"pandas" → 选择最新版本 → 点击安装 - 或通过CMD手动安装:`pip install pandas` 二、基础调用方法 1. 使用「Python」组件 ```python # 影刀Python组件内代码 import pandas as pd def main(): # 创建DataFrame data = {'姓名': ['张三', '李四'], '成绩': [85, 92]} df = pd.DataFrame(data) # 数据处理 avg_score = df['成绩'].mean() # 结果返回影刀流程 return {"平均分": avg_score, "表格数据": df.to_dict()} ``` 2. 数据交互 - 输入参数:通过「输入参数」面板传递影刀变量到Python - 输出参数:通过return语句返回字典类型数据到影刀变量 三、典型应用场景(以Excel处理为例) 1. 读取Excel文件 ```python def main(): # 从影刀输入参数获取文件路径 file_path = r'{{input_path}}' df = pd.read_excel(file_path) # 执行数据清洗... ``` 2. 数据写入Excel ```python def main(): processed_data = pd.DataFrame({{input_data}}) processed_data.to_excel(r'{{output_path}}', index=False) ``` 四、注意事项 1. 内存管理 - 单次处理数据建议不超过100MB - 大数据集使用`chunksize`分块读取 2. 依赖管理 - 需要其他库(如openpyxl)时需同步安装 - 推荐使用虚拟环境管理依赖 3. 异常处理 ```python try: pd.read_csv('data.csv') except Exception as e: print(f"错误信息:{str(e)}") raise # 将异常抛回影刀流程 ``` 五、性能优化建议 1. 优先使用向量化操作代替循环 2. 处理完成后及时释放内存:`del df` 3. 对于简单操作可改用影刀内置Excel组件 通过以上步骤,影刀可以高效集成Pandas实现复杂数据处理,建议从简单案例开始逐步验证数据交互流程。实际使用中需注意影刀变量与Python数据类型的自动转换机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值