簡體   English   中英

PHP show從python腳本返回

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM