1

次のようなJavaクラスでPythonスクリプトを実行しています:

PythonInterpreter interp = new PythonInterpreter();
PythonInterpreter.initialize(System.getProperties(), System.getProperties(), new String[0]);
interp.execfile("C:\\Users\\user1\\workspace\\Projectx\\script.py");

問題は、script.py が通常、次のようなコマンドライン引数を取ることです。

python script.py -i C:/ディレクトリ/パス -o C:/ディレクトリ/パス

Java で PythonInterpereter を介してこれらの引数を渡すことは可能ですか?

アップデート:

Thx to Juned Ahsan 私のコードは次のようになります。

String[] args = {"-i " + lawlinkerIfolder.toString() + " -o " + lawlinkerOfolder.toString()};
PythonInterpreter interp = new PythonInterpreter();
PythonInterpreter.initialize(System.getProperties(), System.getProperties(), args);
interp.execfile("C:\\Users\\user1\\workspace\\Projectx\\script.py");

しかし、スクリプトはまだ引数を取得していません。

これを正しく使用していますか?

4

2 に答える 2

1

以下の呼び出しの最後の引数は、コマンドライン引数用です。

PythonInterpreter.initialize(System.getProperties(), System.getProperties(), new String[0]);

PythronInterpreter javadocsから:

初期化

public static void initialize(Properties preProperties, Properties postProperties, String[] argv)

Jython ランタイムを初期化します。これは、他の Python オブジェクト (PythonInterpreter を含む) が作成される前に、一度だけ呼び出す必要があります。パラメータ: preProperties - プロパティのセット。通常、 System.getProperties() が使用されます。preProperties は、レジストリ ファイルのプロパティをオーバーライドします。postProperties - プロパティの別のセット。python.home、python.path などの値、およびレジストリ ファイルのその他すべての値を、このプロパティ セットに追加できます。postProperties は、システム プロパティとレジストリ プロパティをオーバーライドします。 argv - sys.argv に割り当てられるコマンド ライン引数。

于 2013-07-04T09:29:29.173 に答える