Comment utiliser Python-shell

1. Objet

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.

1.JPG

2. Moyens

Utilisez Python-shell. Cliquez ici pour la source Python-shell

3. Préférences et installation

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

3-1 Comment installer

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

3-2 Exemple d'utilisation

Créez un répertoire TEST et placez test.js et sample.py avec le code suivant.

2.JPG

/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.

3-3 exécution

/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é.

3.JPG

4 Javascript → Lors de l'envoi de données JSON vers Python

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.

15.JPG

/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

Comment utiliser Python-shell
Comment utiliser xml.etree.ElementTree
Remarques sur l'utilisation de tf.data
Comment utiliser virtualenv
Comment utiliser Seaboan
Comment utiliser la correspondance d'image
Comment utiliser le shogun
Comment utiliser Pandas 2
Comment utiliser Virtualenv
Comment utiliser numpy.vectorize
Comment utiliser pytest_report_header
Comment utiliser partiel
Comment utiliser Bio.Phylo
Comment utiliser SymPy
Comment utiliser x-means
Comment utiliser WikiExtractor.py
Comment utiliser IPython
Comment utiliser virtualenv
Comment utiliser Matplotlib
Comment utiliser iptables
Comment utiliser numpy
Comment utiliser TokyoTechFes2015
Comment utiliser venv
Comment utiliser le dictionnaire {}
Comment utiliser Pyenv
Comment utiliser la liste []
Comment utiliser python-kabusapi
Comment utiliser OptParse
Comment utiliser le retour
Comment utiliser pyenv-virtualenv
Comment utiliser imutils
Comment utiliser Qt Designer
Comment utiliser la recherche triée
[gensim] Comment utiliser Doc2Vec
python3: Comment utiliser la bouteille (2)
Comprendre comment utiliser django-filter
Comment utiliser le générateur
[Python] Comment utiliser la liste 1
Comment utiliser FastAPI ③ OpenAPI
Comment utiliser Python Argparse
Comment utiliser IPython Notebook
Comment utiliser Pandas Rolling
[Note] Comment utiliser virtualenv
Comment utiliser les dictionnaires redis-py
Python: comment utiliser pydub
[Python] Comment utiliser checkio
[Aller] Comment utiliser "... (3 périodes)"
Comment faire fonctionner GeoIp2 de Django
[Python] Comment utiliser input ()
Comment utiliser le décorateur
[Introduction] Comment utiliser open3d
Comment utiliser Python lambda
Comment utiliser Jupyter Notebook
[Python] Comment utiliser virtualenv
python3: Comment utiliser la bouteille (3)
python3: Comment utiliser la bouteille
Comment utiliser Google Colaboratory
Comment utiliser les octets Python