在Python(subprocess.run)中使用多个参数执行Knime

时间:2019-04-12 19:04:36

标签: python cmd subprocess knime

大家好

我正在寻找一种以批处理模式在Python中执行KNIME工作流程的方法(不打开KNIME的GUI,https://www.knime.com/faq#q12) 经过数小时的尝试,我问您在这种情况下是否可以提供帮助:

当我运行python文件时,它会打开Knime exe,几秒钟后还会打开knime GUI。不幸的是,exe并没有执行工作流(为了测试工作流,应读取一个csv文件并将其保存在另一个文件目标位置)

这是python 3.7中的实际代码:

import subprocess
subprocess.run(["C:/Program Files/KNIME/knime.exe","-consoleLog","-nosplash","-noexit","-nosave","-reset","-application org.knime.product.KNIME_BATCH_APPLICATION","-workflowDir= C:/Users/jssch/knime-workspace/testexecute"]

当我将以下代码粘贴到命令行中时,该代码可以正常工作并正确执行(它只是移交参数,而不会打开knime GUI):

C:\Program Files\KNIME\knime.exe" -consoleLog -noexit -nosplash -nosave -reset -application org.knime.product.KNIME_BATCH_APPLICATION -workflowDir="C:\Users\jssch\knime-workspace\testexecute"

谢谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我认为您在-application部分中犯了一个错误,它们应该使用不同的字符串。而且-workflowDir= C:/ ...似乎也有多余的空间。

有问题的部分:

"-application org.knime.product.KNIME_BATCH_APPLICATION"

应该是:

"-application", "org.knime.product.KNIME_BATCH_APPLICATION"

可能您也不希望使用-noexit参数。

一起:

import subprocess
subprocess.run(["C:/Program Files/KNIME/knime.exe", "-consoleLog", "-nosplash", "-nosave", "-reset", "-application", "org.knime.product.KNIME_BATCH_APPLICATION", "-workflowDir=C:/Users/jssch/knime-workspace/testexecute"]

(我通常更喜欢没有空格,奇怪字符的路径,我会从其他路径使用KNIME安装,尽管这也很好。)