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 ProcessBuilderpour 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 nbpour pouvoir être passé à la fonction - utilisez sys.argvpour 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]))

Articles connexes


Tarantool en Python - comment appeler la fonction auto_increment

MOI J'ai besoin d'appeler la fonction auto_increment dans Tarantool 1.6 en utilisant le client python. J'ai essayé sans succès: database = tarantool.connect("localhost", 3301) s = database.space("customer") s.call('auto_increment','foo') Quelqu'un pourrait-il

comment annuler pour appeler la fonction en python tkinter?

Rishi Ratan Pandey Je crée une application de rappel en python à l'aide du module Tkinter. Je dois annuler pour appeler la fonction lorsque l'utilisateur clique sur le bouton d'annulation de rappel. J'ai essayé d'affecter la variable de temps (variable de temp

Comment appeler la fonction appelable en PHP?

PHPFan J'ai un tableau intitulé $post_data. Je veux passer ce tableau à une fonction comme argument. Avec ce tableau, je dois passer un autre argument, le 'nom de fonction' appelable comme deuxième argument dans un appel de fonction. Je ne comprends pas commen

Comment appeler la fonction personnelle en tapuscrit

Kreedz Zhen J'écris le tapuscrit pour le langage côté client, je viens de commencer à apprendre le tapuscrit il y a quelques jours, mais il y a un problème qui me rend fou. Je ne peux pas utiliser la fonction à l'intérieur de cette classe. Voici le tapuscrit :

Comment appeler la fonction C # depuis Java

MorganM J'ai besoin d'appeler la fonction C # de java et pour cela, j'ai créé ce qui suit. J'ai créé un fichier d'en-tête java Authenticator.h, voici le code: #include <jni.h> /* Header for class Authenticator */ #ifndef _Included_Authenticator #define _Inclu

Comment appeler la fonction javascript depuis java?

Mehul Prajapati J'ai une bibliothèque Android native, qui attend une fonction java qui fonctionne comme un événement. Mais dans mon plugin nativescript, je veux passer la fonction javascript à la bibliothèque afin que les événements de la bibliothèque soient d

Comment appeler la fonction Go depuis Python

Naren P J'essaie d'appeler la fonction go lang à partir de python lorsque j'appelle mon programme python, je vois l'erreur suivante. Je fais référence au lien Aller à pythn . Programme Python from ctypes import * def call_go_function(): lib =

Appeler la fonction Kotlin en Java

Anto: Je suis néophite à Kotlin. J'ai besoin d'appeler une méthode dans une classe créée dans Kotlin à partir d'une classe Java. La classe en question concerne la création de la base de données. @Database(entities = arrayOf(Indirizzo::class, Dispositivo::class