Выполнить Knime с несколькими аргументами в Python (subprocess.run) - PullRequest
0 голосов
/ 12 апреля 2019

Привет всем ,

Я ищу способ выполнить рабочий процесс KNIME в Python в пакетном режиме (без открытия графического интерфейса пользователя KNIME, https://www.knime.com/faq#q12) После нескольких часов попыток я спрашиваю вас, можете ли вы помочь мне в этом случае:

Когда я запускаю файл python, он открывает exe Knime, через несколько секунд также открывается GUI knime. К сожалению, исполняемый файл не исключает рабочий процесс (для тестирования рабочего процесса следует прочитать файл 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):

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 Ответ

1 голос
/ 12 апреля 2019

Я думаю, что вы ошиблись с частью -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 из другого путихотя это тоже хорошо.)

...