Rufen Sie Python-Code aus Javascrip-Code auf, der auf Node.js ausgeführt wird. Ich möchte auch, dass Javascript-Code die Ausgabe von Python-Code empfängt und die empfangenen Daten in Javascript verarbeitet.
Verwenden Sie die Python-Shell. Klicken Sie hier für die Python-Shell-Quelle
Erläutert die Vorbereitungs- und Installationsmethode für die Verwendung der Python-Shell. Es wird davon ausgegangen, dass node.js und python bereits installiert sind.
Umgebung ・ Ubuntu 18.04 auf Raspberry pi4 (Docker) · Weil. js v12.14.0 ・ Npm 6.13.4
Installieren Sie die Python-Shell mit 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
Erstellen Sie ein Verzeichnis TEST und platzieren Sie test.js und sample.py mit dem folgenden Code.
/home/pi/test/test.js
var {PythonShell} = require('python-shell');
//Erstellen Sie eine Instanz-Pyshell von PythonShell. Der Python-Dateiname, der von js aufgerufen werden soll, lautet'sample.py'
var pyshell = new PythonShell('sample.py');
//Von js zu Python-Code'5'Wird als Eingabedaten bereitgestellt
pyshell.send(5);
//Die Daten werden nach Ausführung des Python-Codes von Python an js übergeben.
//Die an Python übergebenen Daten werden in "Daten" gespeichert.
pyshell.on('message', function (data) {
console.log(data);
});
/home/pi/test/sample.py
import sys
data = sys.stdin.readline() #Daten von der Standardeingabe abrufen
num=int(data)
def sum(a):
return a+3
print(sum(num)) #print()Der Inhalt von wird an js übergeben.
/home/pi/test/
root@24f85fb6fd69:/home/test# node test.js //test.Führen Sie js aus
8 //Das von Python verarbeitete Ergebnis wird an Javascript übergeben und ausgeführt.
Ich habe es gemäß Python-Shell-Quelle versucht, aber der JSON-Formatfehler "Unerwartetes Token T in json an Position 1" wird überall ausgegeben. Es funktioniert nicht und verfolgt, aber es scheint wenig Informationen über Python-Shell zu geben. Also habe ich versucht, JSON-Daten von Javascript über eine separat erstellte JSON-Datei an Python zu senden, und es hat funktioniert.
Der Code ist unten angegeben.
/home/pi/test/test.js
const PYPATH="sample.py"
var {PythonShell} = require('python-shell');
var pyshell = new PythonShell(PYPATH, { mode: 'text'}); //Modus ist "JSON]Es ist besser, stattdessen "Text" anzugeben.
//(1-1)Speichern Sie die zu registrierenden Markendaten in einem Array vom Typ Wörterbuch.
var obj={
stock_num: 2145,
c_name:"ABC_COMPANY",
eps:100
}
//(1-2)Konvertieren eines Wörterbuchtyp-Arrays in das JSON-Format.
var jsondat = JSON.stringify( obj );
//(1-3)Wenn die Datei zum Schreiben des obigen jsondat bereits vorhanden ist, löschen Sie die Datei einmal.
if (fs.existsSync(JSONFILEPATH)) fs.unlinkSync(JSONFILEPATH)
//(1-4)Wenn die Datei zum Schreiben des obigen jsondat bereits vorhanden ist, löschen Sie die Datei einmal.
fs.writeFileSync(JSONFILEPATH,jsondat)
//(2)Senden Sie leere Daten von js an Python-Code. Python-Code starten
pyshell.send("");
//(4)Erhalten Sie Python-Ausführungsergebnisse
pyshell.on('message', function (data) {
console.log(data)
res.send({
message: "success" //Das Ergebnis der von Python durchgeführten Berechnung wird an das Frontend zurückgegeben.
})
})
/home/pi/test/sample.py
import sys
import json
#(3-1)JSON-Dateitest.Öffnen Sie json
f = open('test.json', 'r')
#(3-2)test.Lesen Sie die JSON-Daten
json_dict = json.load(f)
#(3-3)JSON-Daten json_Diktatschlüssel:'stoch_num'Zugreifen.
dat1=json_dict['stock_num']
print(dat1) #Python den Inhalt des Drucks-Kehre zur Shell zurück
/home/pi/test/test.json
{"stock_num":"2145","c_name":"ABC company","eps":"100"}
Recommended Posts