Appelez le code Python à partir du code Javascrip qui s'exécute sur Node.js. Je souhaite également que le code Javascript reçoive la sortie du code Python et traite les données reçues sur Javascript.
Utilisez Python-shell. Cliquez ici pour la source Python-shell
Explique la méthode de préparation et d'installation pour utiliser Python-shell. On suppose que node.js et python sont déjà installés.
environnement ・ Ubuntu 18.04 sur Raspberry pi4 (Docker) · Parce que. js v12.14.0 ・ Npm 6.13.4
Installez python-shell en utilisant npm.
python
root@24f85fb6fd69:/home# npm install python-shell
npm WARN [email protected] No description
npm WARN [email protected] No repository field.
+ [email protected]
updated 1 package and audited 103 packages in 2.37s
found 0 vulnerabilities
Créez un répertoire TEST et placez test.js et sample.py avec le code suivant.
/home/pi/test/test.js
var {PythonShell} = require('python-shell');
//Créez une instance pyshell de PythonShell. Le nom du fichier python à appeler depuis js est'sample.py'
var pyshell = new PythonShell('sample.py');
//De js au code python'5'Est fourni comme données d'entrée
pyshell.send(5);
//Les données sont transmises de python à js après l'exécution du code python.
//Les données passées à python sont stockées dans "data".
pyshell.on('message', function (data) {
console.log(data);
});
/home/pi/test/sample.py
import sys
data = sys.stdin.readline() #Obtenir des données à partir d'une entrée standard
num=int(data)
def sum(a):
return a+3
print(sum(num)) #print()Le contenu de est passé à js.
/home/pi/test/
root@24f85fb6fd69:/home/test# node test.js //test.Exécutez js
8 //Le résultat traité par python est passé à javascript et exécuté.
J'ai essayé selon source Python-shell, mais l'erreur de format JSON "jeton inattendu T en json à la position 1" est sortie partout. Cela ne fonctionne pas et trace, mais il semble y avoir peu d'informations sur Python-shell. J'ai donc essayé d'envoyer des données JSON de Javascript vers Python via un fichier JSON créé séparément, et cela a fonctionné.
Le code est affiché ci-dessous.
/home/pi/test/test.js
const PYPATH="sample.py"
var {PythonShell} = require('python-shell');
var pyshell = new PythonShell(PYPATH, { mode: 'text'}); //le mode est "JSON]Il est préférable de spécifier "texte" à la place.
//(1-1)Stockez les données de marque à enregistrer dans un tableau de type dictionnaire.
var obj={
stock_num: 2145,
c_name:"ABC_COMPANY",
eps:100
}
//(1-2)Conversion d'un tableau de types de dictionnaire au format JSON.
var jsondat = JSON.stringify( obj );
//(1-3)Si le fichier pour écrire le jsondat ci-dessus existe déjà, supprimez le fichier une fois.
if (fs.existsSync(JSONFILEPATH)) fs.unlinkSync(JSONFILEPATH)
//(1-4)Si le fichier pour écrire le jsondat ci-dessus existe déjà, supprimez le fichier une fois.
fs.writeFileSync(JSONFILEPATH,jsondat)
//(2)Envoyez des données vides de js vers du code python. Pour lancer du code python
pyshell.send("");
//(4)Recevoir les résultats de l'exécution Python
pyshell.on('message', function (data) {
console.log(data)
res.send({
message: "success" //Le résultat du calcul effectué par python est renvoyé au frontal.
})
})
/home/pi/test/sample.py
import sys
import json
#(3-1)Test de fichier JSON.Ouvrir json
f = open('test.json', 'r')
#(3-2)test.Lire les données JSON
json_dict = json.load(f)
#(3-3)Données JSON json_clé dict:'stoch_num'Accéder.
dat1=json_dict['stock_num']
print(dat1) #python le contenu de l'impression-Retour à la coque
/home/pi/test/test.json
{"stock_num":"2145","c_name":"ABC company","eps":"100"}
Recommended Posts