Я нашел несколько советов, как это сделать, но объединить их вместе не получится, поэтому я прошу помощи.
У меня есть скрипт на Python, который получает переменные из параметров (аргументов?) (Sys.argv). Я использовал PyInstaller для создания exe.
Теперь мне нужно открыть этот файл с параметрами из java.
Проблема в том, что я получил сообщение об ошибке: Не удалось выполнить скрипт [ScriptName].
Это мой код из java:
try {
ProcessBuilder process = new ProcessBuilder(Location, arg1, arg2, arg3, arg4,
arg5, arg6, arg7, arg8, arg9,
arg10, arg11, arg12, arg13, arg14);
Process proc = process.start();
proc.waitFor();
} catch (IOException | InterruptedException e) {
//logging the result
e.printStackTrace();
}
А это мой код на Python:
arg1 = sys.argv[2]
arg2 = sys.argv[3]
arg3 = sys.argv[4]
arg4 = sys.argv[5]
arg5 = sys.argv[6]
(...)
Я пробовал разные «позиции argv» (например, arg1 = sys.argv [1] и т. д.), Но ничего не работает.
Заранее благодарю за любую помощь.
Что такое Location? Это твой сценарий?
Местоположение - это местоположение exe-файла (созданного pyInstaller)




Вы можете попытаться составить вызов String со всеми вашими аргументами, подобными этому (вы должны использовать StringBuilder или что-то подобное для аккуратного кода):
String call = "python yourscript.py argument1 argument2 argument3";
Process p = Runtime.getRuntime().exec(call);
До сих пор это всегда работало для меня, даже без необходимости в .exe. Кроме того, вы должны иметь возможность запускать .exe точно так же.
Ничего из упомянутого не сработало, я решил сделать это с помощью txt-файла (написать txt на java и прочитать его на python).
Я думаю, что лучшим вариантом было бы передать данные по базе данных, но в этом случае это был не вариант :(
КСТАТИ. Я также пробовал получать значения с помощью argparse вместо sys.arg, но я думаю, что проблема была в java (сценарий даже не был выполнен).
Посмотрите пожалуйста ссылку stackoverflow.com/questions/27267391/…