在PHP中正确打印python脚本输出

时间:2012-08-03 08:32:45

标签: 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字符。我该怎样解决这个问题?

4 个答案:

答案 0 :(得分:4)

这可以工作

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

答案 1 :(得分:0)

希望您尝试在网络中打印此字符串。 在这种情况下,PHP可能无法使用\ n字符,而是期望<br/> PHP有一个内置函数,负责字符串的转换。

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

答案 2 :(得分:0)

另一种方法是将字符串包装在<pre>...</pre>标记之间。

答案 3 :(得分:0)

它似乎是Python 3脚本的输出:

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

子进程返回字节,print函数将其表示打印为b'...\n...',其中'\ n'是两个字符(不是换行符)。

您可以通过将qx()返回的值转换为Unicode然后打印它或按原样写入字节来修复它:

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