Heim >Backend-Entwicklung >PHP-Problem >So führen Sie ein Python-Skript in einem PHP-Programm aus
(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.
Führen Sie ein externes Programm aus
exec ( string $command [, array &$output [, int &$return_var ]] ) : string
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.
index.php
<?php $re = exec('python ceshi.py', $out); // $re = iconv('gbk', 'utf-8', $re); var_dump($out); echo '<br/>'; var_dump($re);
ceshi.py
def send(): data = '1,2,3,4,5' print(data) if __name__ == '__main__': send()
aus (Wichtiger Hinweis: Wenn die vom Python-Skript zurückgegebenen Daten Chinesisch enthalten, müssen Sie iconv('gbk', 'utf-8') verwenden. , $re ); Escape)
inde.php
$canshu1 = '这是PHP传过来的参数'; $canshu2 = date('Y-m-d'); $re = exec("python ceshi.py $canshu1 $canshu2"); $re = iconv('gbk', 'utf-8', $re); var_dump($re);
test.py
import sys def send(): # a1 = sys.argv[1] # a2 = sys.argv[2] re = sys.argv[1:] data = '1,2,3,4,5,' + ','.join(re) # 转字符串 print(data) if __name__ == '__main__': send()
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 = {'id':111, 'title':'测试title'} dict['data'] = sys.argv[1:] jsonArr = json.dumps(dict, ensure_ascii=False) print(jsonArr) if __name__ == '__main__': send()
(bei chinesischen Schriftzeichen müssen Sie „sure_ascii=False“ angeben)
führt das externe Programm aus und zeigt die Ausgabe an
system ( string $command [, int &$return_var ] ) : string
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 '这是运行直接输出:'; $re = system('python ceshi.py'); // $re = iconv('gbk', 'utf-8', $re); echo '<br/>'; echo '这是赋值输出:'; var_dump($re);
Die Originalversion von test.py ist wie folgt:
passthru ( string $command [, int &$return_var ] ) : voidGleich 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 '这是运行直接输出:'; $re = passthru('python ceshi.py'); // $re = iconv('gbk', 'utf-8', $re); echo '<br/>'; echo '这是赋值输出:'; var_dump($re);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!