GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie führe ich ein Python-Skript von Java aus aus?

Sie können die PIPE nicht innerhalb von Runtime.getRuntime().exec() verwenden wie in deinem Beispiel. PIPE ist Teil der Shell.

Sie könnten beides tun

  • Schreiben Sie Ihren Befehl in ein Shell-Skript und führen Sie dieses Shell-Skript mit .exec() aus oder
  • Sie können etwas Ähnliches wie das Folgende tun

    String[] cmd = {
            "/bin/bash",
            "-c",
            "echo password | python script.py '" + packet.toString() + "'"
        };
    Runtime.getRuntime().exec(cmd);
    

@ Alpers Antwort sollte funktionieren. Besser noch, verwenden Sie überhaupt kein Shell-Skript und keine Umleitung. Sie können das Passwort direkt in die stdin des Prozesses schreiben, indem Sie den (verwirrend benannten) Process.getOutputStream() verwenden .

Process p = Runtime.exec(
    new String[]{"python", "script.py", packet.toString()});

BufferedWriter writer = new BufferedWriter(
    new OutputStreamWriter(p.getOutputStream()));

writer.write("password");
writer.newLine();
writer.close();

Sie würden Schlimmeres tun, als zu versuchen, Jython einzubetten und Ihr Skript auszuführen. Ein einfaches Beispiel soll helfen:

ScriptEngine engine = new ScriptEngineManager().getEngineByName("python");

// Using the eval() method on the engine causes a direct
// interpretataion and execution of the code string passed into it
engine.eval("import sys");
engine.eval("print sys");

Wenn Sie weitere Hilfe benötigen, hinterlassen Sie einen Kommentar. Dadurch entsteht kein zusätzlicher Prozess.


Linux
  1. Wie setze ich im Python-Skript PYTHONPATH?

  2. Führen Sie das Bash-Skript von der URL aus

  3. Wie installiere ich ein Skript, das überall von der Befehlszeile aus ausgeführt werden kann?

  4. Wie erhalte ich eine Ausgabe von gdb.execute in PythonGDB (GDB 7.1)?

  5. So führen Sie eine Python-Datei unter Linux aus

So führen Sie einen Shell-Befehl mit Python aus

So führen Sie ein Python-Skript in PHP aus

Wie führe ich einen Befehl in einem Shell-Skript aus?

So stellen Sie von Linux aus eine Verbindung zu SQL Server her

Wie führt man ein Bash-Skript aus?

Wie debugge ich einen Upstart-Job?