Comment appeler la fonction Python en Java
MedDiv
Voici mon code Python:
class myPythonClass:
def table(nb):
i = 0
while i < 10:
print(i + 1, "*", nb, "=", (i + 1) * nb)
i += 1
J'ai besoin de savoir comment l'appeler en utilisant PythonInterpreter.
mhawke
En Java, utilisez ProcessBuilder
pour créer un processus enfant et capturer sa sortie standard. Voici un exemple:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
class CallPython {
public static void main(String[] args) throws IOException, InterruptedException {
ProcessBuilder pb = new ProcessBuilder("python", "/path/to/your/script.py", "10");
Process p = pb.start();
char[] readBuffer = new char[1000];
InputStreamReader isr = new InputStreamReader(p.getInputStream());
BufferedReader br = new BufferedReader(isr);
while (true) {
int n = br.read(readBuffer);
if (n <= 0)
break;
System.out.print(new String(readBuffer, 0, n));
}
}
}
Votre script Python aura également besoin de modifications pour pouvoir appeler la fonction, qui devrait en fait être une méthode statique, une méthode de la classe ou simplement être une fonction autonome. Le script a également besoin d'une valeur pour nb
pour pouvoir être passé à la fonction - utilisez sys.argv
pour cela. Donc, par exemple en tant que méthode statique:
import sys
class myPythonClass:
@staticmethod
def table(nb):
i = 0
while i < 10:
print(i + 1, "*", nb, "=", (i + 1) * nb)
i += 1
if __name__ == '__main__':
myPythonClass.table(int(sys.argv[1]))