如何在Jupyter Lab中用Python调用KNIME工作流并传递文件名
解决方案
一、修改KNIME工作流配置
- 添加工作流参数传递文件名:
- 打开你的KNIME工作流,点顶部菜单栏的File > Workflow Parameters。
- 点Add按钮,新建一个字符串类型的参数,命名为
input_file_path,可以设个默认路径方便测试。
- 绑定文件读取节点到参数:
- 双击CSV Reader(或你用的文件读取节点),在文件路径栏点右侧的**...,选择Use Workflow Parameter**,选中刚才创建的
input_file_path。
- 双击CSV Reader(或你用的文件读取节点),在文件路径栏点右侧的**...,选择Use Workflow Parameter**,选中刚才创建的
- 配置结果输出:
- 在统计节点的输出端口接一个CSV Writer节点,设置好输出文件的路径(比如
/knimedir/knime_result.csv),也可以把输出路径也做成工作流参数,更灵活。 - 确认所有节点连接正常,保存工作流。
- 在统计节点的输出端口接一个CSV Writer节点,设置好输出文件的路径(比如
二、调整Python代码
你之前用data_table_inputs无效是因为这个属性只针对带KNIME Python节点或Container Input/Output节点的工作流,普通节点没有暴露这类交互端口。正确的做法是通过工作流参数传文件名,执行后读取KNIME生成的输出文件:
import pandas as pd import knime # 配置KNIME和工作空间路径 knime.executable_path = '/Applications/KNIME 5.1.1.app/Contents/MacOS/Knime' workspace = '/knimedir/knime-workspace' workflow = 'testworflow' # 定义要传递的输入文件和KNIME输出文件路径 input_file = "/knimedir/bankds.csv" output_file = "/knimedir/knime_result.csv" # 加载并执行工作流 with knime.Workflow(workflow_path=workflow, workspace_path=workspace) as wf: # 给KNIME工作流传参数 wf.parameters["input_file_path"] = input_file # 如果输出路径也设了参数,同样在这里赋值 # wf.parameters["output_file_path"] = output_file wf.execute() # 读取KNIME输出的结果 result_df = pd.read_csv(output_file) print(result_df)
补充:无文件中转的方案
如果不想通过文件传递数据,可以给KNIME工作流加Container Input和Container Output节点:
- 加一个Container Input节点,设置输入类型为表格;
- 把Container Input的输出连到你的过滤节点;
- 在统计节点后加一个Container Output节点;
- 这样就可以直接用
wf.data_table_inputs[0] = df传数据,wf.data_table_outputs[0]获取结果,不用文件中转。
内容的提问来源于stack exchange,提问作者nik
相关产品推荐
相关产品推荐

