Heim > Backend-Entwicklung > PHP-Problem > So führen Sie ein Python-Skript in einem PHP-Programm aus

So führen Sie ein Python-Skript in einem PHP-Programm aus

WBOY
Freigeben: 2023-03-16 19:48:02
nach vorne
2634 Leute haben es durchsucht

(Empfohlenes Tutorial: PHP-Video-Tutorial)

Einführung in die Ausführung von Python-Skripten in PHP-Programmen.

Die Ausführung von Python-Programmen in PHP basiert hauptsächlich auf Programmausführungsfunktionen.

Lassen Sie uns hier darüber sprechen Drei verwandte Funktionen: exec(), system() und passhru().

Hier sprechen wir hauptsächlich über die Funktion exec(), stellen vor, wie man diese Funktion zum Übergeben von Parametern verwendet,

und wie man Python verwendet, um JOSN-Daten für die Verwendung durch PHP zurückzugeben.

1. exec()

Führen Sie ein externes Programm aus

exec ( string $command [, array &$output [, int &$return_var ]] ) : string
Nach dem Login kopieren

Parameterbeschreibung:

Befehl: Der auszuführende Befehl, der drei Teilzeichenfolgen enthält, ist der Interpreter des aktuell verwendeten Systems Die Teilzeichenfolge ist der Speicherort des auszuführenden Skripts, und die dritte Teilzeichenfolge ist eine unbegrenzte Anzahl von Parametern, die durch Leerzeichen getrennt übergeben werden müssen. Achten Sie auf das Format. Verwenden Sie Leerzeichen, um Teilzeichenfolgen zu trennen.

Ausgabe: Wenn der Ausgabeparameter angegeben wird, wird dieses Array mit der Ausgabe der Befehlsausführung gefüllt, ein Element im Array für jede Ausgabezeile. (Hinweis: Was in der Ausgabe gespeichert wird, ist nicht der Rückgabewert in Python, und alle Rückgabewerte werden nicht gespeichert. Was in der Ausgabe gespeichert wird, ist der im Python-Skript ausgegebene Wert, bei dem es sich um alle von der Ausgabe ausgegebenen Daten handelt print()-Funktion)

return_var: Wenn sowohl Ausgabe- als auch Return_var-Parameter bereitgestellt werden, wird der Rückgabestatus nach der Befehlsausführung in diese Variable geschrieben.

1. Führen Sie direkt

index.php

<?php
$re = exec(&#39;python ceshi.py&#39;, $out);
// $re = iconv(&#39;gbk&#39;, &#39;utf-8&#39;, $re);
var_dump($out);
echo &#39;<br/>&#39;;
var_dump($re);
Nach dem Login kopieren

ceshi.py

def send():
    data = &#39;1,2,3,4,5&#39;
    print(data)
if __name__ == &#39;__main__&#39;:
    send()
Nach dem Login kopieren

aus (Wichtiger Hinweis: Wenn die vom Python-Skript zurückgegebenen Daten Chinesisch enthalten, müssen Sie iconv('gbk', 'utf-8') verwenden. , $re ); Escape)

2. Übergeben Sie Parameter und erhalten Sie Rückgabedaten

inde.php

$canshu1 = &#39;这是PHP传过来的参数&#39;;
$canshu2 = date(&#39;Y-m-d&#39;);
$re = exec("python ceshi.py $canshu1 $canshu2");
$re = iconv(&#39;gbk&#39;, &#39;utf-8&#39;, $re);
var_dump($re);
Nach dem Login kopieren

test.py

import sys
def send():
    # a1 = sys.argv[1]
    # a2 = sys.argv[2]
    re = sys.argv[1:]
    data = &#39;1,2,3,4,5,&#39; + &#39;,&#39;.join(re) # 转字符串
    print(data)
if __name__ == &#39;__main__&#39;:
    send()
Nach dem Login kopieren

Importieren Sie das sys-Paket und verwenden Sie das sys.argv[]-Array, um das zu erhalten Eingehende Parameter, Abschnitt Ein eingehender Parameter ist sys.argv[1], der zweite ist sys.argv[2] und so weiter. Verwenden Sie nicht argv[0]

, um die zurückgegebenen JSON-Daten zu empfangen:

import sys
import json
def send():
    dict = {&#39;id&#39;:111, &#39;title&#39;:&#39;测试title&#39;}
    dict[&#39;data&#39;] = sys.argv[1:]
    jsonArr = json.dumps(dict, ensure_ascii=False)
    print(jsonArr)
if __name__ == &#39;__main__&#39;:
    send()
Nach dem Login kopieren

(bei chinesischen Schriftzeichen müssen Sie „sure_ascii=False“ angeben)

2. system()

führt das externe Programm aus und zeigt die Ausgabe an

system ( string $command [, int &$return_var ] ) : string
Nach dem Login kopieren

Gleiche wie die C-Version der system()-Funktion Diese Funktion führt den Befehlsparameter aus. Geben Sie den Befehl an und geben Sie die Ausführungsergebnisse aus.

Wenn PHP im Servermodul ausgeführt wird, versucht die Funktion system() außerdem, den Ausgabecache des Webservers nach jeder Ausgabezeile automatisch zu aktualisieren.

Wenn Sie die Rohausgabe eines Befehls ohne jegliche Verarbeitung erhalten möchten, verwenden Sie bitte die Funktion passhru().

index.php

<?php
echo &#39;这是运行直接输出:&#39;;
$re = system(&#39;python ceshi.py&#39;);
// $re = iconv(&#39;gbk&#39;, &#39;utf-8&#39;, $re);
echo &#39;<br/>&#39;;
echo &#39;这是赋值输出:&#39;;
var_dump($re);
Nach dem Login kopieren

Die Originalversion von test.py ist wie folgt:

3. führt das externe Programm aus und zeigt die Ausgabe an

passthru ( string $command [, int &$return_var ] ) : void
Nach dem Login kopieren
Gleich wie die Funktion exec() Ebenso wird die Funktion passhru() auch zum Ausführen externer Befehle verwendet. Wenn der ausgeführte Unix-Befehl Binärdaten ausgibt und direkt an den Browser übertragen werden muss, muss diese Funktion anstelle der Funktion exec() oder system() verwendet werden. Wird häufig zum Ausführen von Befehlen wie pbmplus verwendet, mit denen Bildströme direkt ausgegeben werden können. Indem Sie Content-Type auf image/gif setzen und dann das pbmplus-Programm aufrufen, um eine GIF-Datei auszugeben, können Sie das Bild direkt aus dem PHP-Skript an den Browser ausgeben.

index.php

echo &#39;这是运行直接输出:&#39;;
$re = passthru(&#39;python ceshi.py&#39;);
// $re = iconv(&#39;gbk&#39;, &#39;utf-8&#39;, $re);
echo &#39;<br/>&#39;;
echo &#39;这是赋值输出:&#39;;
var_dump($re);
Nach dem Login kopieren
Die Originalversion von test.py wird hier verwendet und der Ausgabeeffekt ist wie folgt:

(Empfohlenes Tutorial: PHP-Video-Tutorial

)

Das obige ist der detaillierte Inhalt vonSo führen Sie ein Python-Skript in einem PHP-Programm aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:jb51.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage