GNU/Linux >> Linux の 問題 >  >> Linux

JavaからPythonスクリプトを実行するには?

Runtime.getRuntime().exec() 内で PIPE を使用することはできません あなたの例で行うように。 PIPE はシェルの一部です。

どちらでも構いません

  • コマンドをシェル スクリプトに入力し、そのシェル スクリプトを .exec() で実行します。 または
  • 次のようなことができます

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

@Alperの答えはうまくいくはずです。ただし、シェル スクリプトとリダイレクトをまったく使用しないことをお勧めします。 (紛らわしい名前の) Process.getOutputStream() を使用して、パスワードをプロセスの stdin に直接書き込むことができます。 .

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

jython を埋め込んでスクリプトを実行するよりも悪いことをするでしょう。簡単な例が役に立ちます:

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

さらにヘルプが必要な場合は、コメントを残してください。これにより、追加のプロセスが作成されることはありません。


Linux
  1. デスクトップショートカットからShスクリプトを実行する方法は?

  2. シェルからPythonスクリプトを実行する方法

  3. Python スクリプトで、PYTHONPATH を設定するにはどうすればよいですか?

  1. URLからbashスクリプトを実行

  2. crontab 経由で Python スクリプトを実行する

  3. Pythonスクリプトからシェルスクリプトへの戻り値

  1. Pythonスクリプトを使用してSFTPサーバーからファイルをダウンロードする方法

  2. Pythonを3.4.3から3.5に更新する方法は??

  3. 外部のpythonスクリプトでDjangoシェルでコードを実行するには?