GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire lo script Python da Java?

Non puoi usare il PIPE all'interno del Runtime.getRuntime().exec() come fai nel tuo esempio. PIPE fa parte della shell.

Potresti fare entrambi

  • Inserisci il tuo comando in uno script di shell ed esegui quello script di shell con .exec() o
  • Puoi fare qualcosa di simile al seguente

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

La risposta di @Alper dovrebbe funzionare. Meglio ancora, però, non usare affatto uno script di shell e il reindirizzamento. Puoi scrivere la password direttamente nello stdin del processo usando il (nome confuso) Process.getOutputStream() .

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();

Faresti peggio che provare a incorporare jython ed eseguire il tuo script. Un semplice esempio dovrebbe aiutare:

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");

Se hai bisogno di ulteriore aiuto, lascia un commento. Questo non crea un processo aggiuntivo.


Linux
  1. Come scaricare file dal server SFTP utilizzando lo script python

  2. Come aggiornare Python da 3.4.3 a 3.5??

  3. Esegue lo script bash dall'URL

  4. Come installo uno script da eseguire ovunque dalla riga di comando?

  5. Come ottenere l'output da gdb.execute in PythonGDB (GDB 7.1)?

Come eseguire un comando Shell con Python

Come eseguire uno script Python in PHP

Come eseguire un comando in uno script della shell?

Come connettersi a SQL Server da Linux

Come eseguire il codice nella shell Django da uno script Python esterno?

Come si esegue il debug di un lavoro upstart?