Запустите скрипт Python из Java: ошибка CreateProcess = 2, система не может найти указанный файл - PullRequest
0 голосов
/ 23 января 2019

Прежде чем сообщить об этом как о дубликате, поймите, что я потратил несколько часов на просмотр похожих вопросов на множестве различных веб-сайтов, многие из которых были отсюда.Они не объясняют решение достаточно хорошо, чтобы я мог взять их ответы и применить их к моей собственной проблеме.Если вы все еще испытываете желание сообщить об этом, сделайте это.Все, что вы будете делать, - это помешать мне научиться лучше кодировать.

Я пытаюсь вызвать скрипт на python и передать ему 5 аргументов.Я попробовал несколько разных способов сделать это и считаю, что путь к построителю процессов - мой лучший вариант.Тем не менее, у меня есть несколько вопросов, так как они не являются правильным кодом:

  1. Нужно ли указывать сборщику процесса путь к исполняемому файлу или я могу просто дать емупуть к обычному файлу .py?

  2. Нужно ли собирать выходные данные из файла python?

Если есть какие-либо другиеаспекты проблемы, которую я не вижу, пожалуйста, дайте мне знать.Мой код выглядит правильно по сравнению с другими в Интернете, делающими то же самое.Он указан ниже:

 private void runPython(String pythonPath, HashMap<String, String> map){
     pythonPath = "C:/Users/Carlos/PycharmProjects/autoHTML/javaToExcel.py";

     try {

        ProcessBuilder pb = new ProcessBuilder(pythonPath + "/" + "python", pythonPath, map.get("Driver Advances"), map.get("Driver Loans"),
                map.get("Escrow Fund"), map.get("Maintenance Fund"), map.get("Highway Use tax - 2290"));

        Process p = pb.start();

    catch(Exception e) {
        System.out.println("Python error");
    }
}

, если вам нужен какой-либо код или на любые вопросы, на которые вам нужно ответить, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 24 января 2019

Для создания процессов операционной системы вы можете использовать ProcessBuilder, который принимает 2 аргумента:

  • Процесс, который нужно запустить, здесь это путь к вашему исполняемому файлу Python (он же: "C: / Users"/Carlos/PycharmProjects/autoHTML/javaToExcel.py/python.exe "или что-то подобное).
  • Аргументы для передачи вашему процессу:

    • Путь к вашемускрипт Python и его собственные аргументы.

Вы можете попробовать:

ProcessBuilder pb = new ProcessBuilder(
    "C:/Users/Carlos/PycharmProjects/autoHTML/javaToExcel.py/python.exe",
    pythonPath,
    map.get("Driver Advances"),
    map.get("Driver Loans"),
    map.get("Escrow Fund"),
    map.get("Maintenance Fund"),
    map.get("Highway Use tax - 2290"));
...