GNU/Linux >> Znalost Linux >  >> Linux

Jak spustit Python skript z Javy?

Nemůžete použít PIPE uvnitř Runtime.getRuntime().exec() jak to děláte ve svém příkladu. PIPE je součástí pláště.

Můžete udělat obojí

  • Vložte příkaz do skriptu prostředí a spusťte tento skript pomocí příkazu .exec() nebo
  • Můžete udělat něco podobného následujícímu

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

@Alperova odpověď by měla fungovat. Ještě lépe však nepoužívejte shellový skript a přesměrování vůbec. Heslo můžete zapsat přímo do stdin procesu pomocí (chybně pojmenovaného) 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();

Udělali byste horší, než abyste zkusili vložit jython a spustit svůj skript. Měl by pomoci jednoduchý příklad:

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

Pokud potřebujete další pomoc, zanechte komentář. Tím se nevytvoří další proces.


Linux
  1. Spusťte skript Python přes crontab

  2. Spuštění skriptu Python z PHP

  3. návratová hodnota z python skriptu do shell skriptu

  1. Jak stahovat soubory ze serveru SFTP pomocí skriptu python

  2. Jak spustit kód v prostředí Django pomocí externího skriptu python?

  3. Jak spustit bash skript?

  1. Jak spustit skript Sh ze zástupce na ploše?

  2. Jak aktualizovat Python z 3.4.3 na 3.5?

  3. Jak spouštět skripty Pythonu ze shellu