4

ファイル(Excel、xmlなど)からデータを抽出するために使用できるjar形式のJavaライブラリがあります。Java と同様に、Java アプリケーションでのみ使用できます。しかし、Python プロジェクトにも同じライブラリを使用する必要があります。jvmからオブジェクトを取得するpy4jなどを試しました。ただし、ライブラリは実行可能ファイルではなく、「実行」できません。Jython を確認しましたが、Python プロジェクトからライブラリにアクセスできるようにする必要があります。自動化されたJavaからPythonへのトランスレータを使用することを考えましたが、それは最後の手段です.

これを達成できる方法を提案してください。

4

3 に答える 3

2

You can write a simple command line Java program which calls the library and saves the results in a format you can read in Python, then you can call the program from Python using os.system.

Another option is to find Python libraries with equivalent functionality to the Java library: you can read excel, xml and other files in Python, that's not a problem.

于 2012-08-21T09:56:00.037 に答える
2

Python から通知を送信するまでスレッドが終了しない 1 クラスの Java プログラムを作成できます。

このようにして、ライブラリはメモリに保持され、Python プログラムからアクセスできるようになります。

このクラスは次のようになります (必要な lib import/init を追加します):

public class TestPy {

    private Thread thread;

    public void die() {
        synchronized (thread) {
            thread.interrupt();
        }    
    }

    public TestPy() {
        thread = new Thread(){
            public void run() {
                try {
                    while (!Thread.interrupted()) {
                        Thread.sleep(500);
                    }
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                }
            }
        };
        thread.start();    
    }

    public static void main(String[] args) {
        TestPy tp = new TestPy();
        GatewayServer server = new GatewayServer(tp);
        server.start();
    }
}

Java プログラムを起動し、lib を使用してから、die() メソッドを使用して Python で Java プログラムを強制終了する必要があります。

gateway = JavaGateway()
do your stuff here using the lib
tp = gateway.entry_point
tp.die()
于 2012-08-21T09:50:43.020 に答える