GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exécuter un script Python à partir de Java ?

Vous ne pouvez pas utiliser le PIPE à l'intérieur du Runtime.getRuntime().exec() comme vous le faites dans votre exemple. PIPE fait partie du shell.

Vous pouvez faire l'un ou l'autre

  • Placez votre commande dans un script shell et exécutez ce script shell avec .exec() ou
  • Vous pouvez faire quelque chose de similaire à ce qui suit

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

La réponse de @Alper devrait fonctionner. Mieux encore, n'utilisez pas du tout de script shell et de redirection. Vous pouvez écrire le mot de passe directement dans le stdin du processus en utilisant le (nom prêtant à confusion) 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();

Vous feriez pire que d'essayer d'intégrer jython et d'exécuter votre script. Un exemple simple devrait vous aider :

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

Si vous avez besoin d'aide supplémentaire, laissez un commentaire. Cela ne crée pas de processus supplémentaire.


Linux
  1. Dans le script Python, comment définir PYTHONPATH ?

  2. Exécuter le script bash à partir de l'URL

  3. Comment installer un script pour qu'il s'exécute n'importe où à partir de la ligne de commande ?

  4. Comment obtenir la sortie de gdb.execute dans PythonGDB (GDB 7.1) ?

  5. Comment exécuter un fichier python sous Linux

Comment exécuter une commande Shell avec Python

Comment exécuter un script Python en PHP

Comment exécuter une commande dans un script shell ?

Comment se connecter à SQL Server à partir de Linux

Comment exécuter un script bash ?

Comment déboguer une tâche parvenue ?