[英]PHP show return from python script
我無法獲取php來顯示我的python腳本的完整結果,僅打印了最后一個基本的打印語句。 我在這里做錯了什么? 為什么PHP無法顯示python腳本的輸出?
的PHP
$result = exec('python list.py');
echo $result;
list.py
import subprocess
print "start"
a = subprocess.Popen(["ls", "-a"], stdout=subprocess.PIPE)
a.wait()
result_str = a.stdout.read()
print result_str
print "stop"
該python腳本的命令行輸出如下
start
...filename
...filename
...etc...etc
stop
來自執行python腳本的php輸出僅
停
謝謝
exec
將始終 從命令結果返回最后一行 。 因此,如果您需要從執行的命令中獲取每一行輸出。 然后,您需要編寫如下內容:
$result = exec('python list.py', $ouput);
print_r($output)
根據執行文檔
string exec ( string $command [, array &$output [, int &$return_var ]] )
如果存在
output
參數,則命令的輸出的每一行都將填充指定的數組。 尾隨空格(例如\\ n)不包含在此數組中。 請注意,如果數組已經包含一些元素,則exec()將追加到數組的末尾。 如果您不希望函數追加元素,請在將數組傳遞給exec()之前在數組上調用unset()。
您需要將$result
作為參數傳遞給exec()
否則只會得到最后一條語句。
exec('python list.py', $result);
print_r($result);
這將得到一個輸出數組, $result[0]
將包含stop
而$result[sizeof($result)-1]
將包含stop
,介於兩者之間的所有內容都將包含程序輸出的其余部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.