2012-08-03 54 views
2

我有一個PHP文件調用的腳本,並打印這樣打印python腳本輸出正確的PHP

 

    $output=shell_exec('/usr/bin/python hello.py'); 
    echo $output; 

它打印輸出;

 

    b'total 16\ndrwx---r-x 2 oae users 4096 Jul 31 14:21 .\ndrwxr-x--x+ 9 oae root 4096 Jul 26 13:59 ..\n-rwx---r-x 1 oae users 90 Aug 3 11:22 hello.py\n-rwx---r-x 1 oae users 225 Aug 3 11:22 index.php\n' 

但它應該是這樣的;

 

    total 16K 
    drwx---r-x 2 oae users 4.0K Jul 31 14:21 ./ 
    drwxr-x--x+ 9 oae root 4.0K Jul 26 13:59 ../ 
    -rwx---r-x 1 oae users 90 Aug 3 11:22 hello.py* 
    -rwx---r-x 1 oae users 225 Aug 3 11:22 index.php* 

\ n字符不應該顯示。我該如何解決這個問題?

+0

確定。問題是python腳本。我想我應該從腳本解決這個問題。如果我使用shell_exec('ls -la ./'),pre方法正在工作。 – 2012-08-03 09:47:33

回答

3

這可能是工作

$output=shell_exec('/usr/bin/python hello.py'); 
echo "<pre>"; 
print_r($output); 
echo "</pre>"; 
0

希望你試圖在網頁上打印這個字符串。 在這種情況下,PHP可能無法使用\ n字符,而是預計爲<br/> PHP有一個內置函數來處理字符串的這種轉換。

http://php.net/manual/en/function.nl2br.php

+0

我試過了,但它只是將最後一個換行符轉換爲
。 – 2012-08-03 08:46:07

0

另一種方法是包裝<pre>...</pre>標籤之間的字符串。

+0

無法正常工作。輸出是一樣的。 – 2012-08-03 08:54:47

0

這似乎是從一個Python 3腳本輸出:

from subprocess import check_output as qx 
print(qx(['ls'])) 

子進程返回字節和打印功能打印他們的表現爲b'...\n...',其中「\ n '是兩個字符(不是換行符)。

你可以通過轉換QX修復它()返回的值轉換爲Unicode,然後打印出來或寫字節是:

sys.stdout.buffer.write(qx(['ls']))