【问题标题】:Print python script output correctly in PHP在 PHP 中正确打印 python 脚本输出
【发布时间】:2012-08-01 06:57:46
【问题描述】:

我有一个 php 文件调用一个脚本并像这样打印输出

$output=shell_exec('/usr/bin/python hello.py'); 回声$输出;

打印出来;

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

但应该是这样的;

总计 16K drwx---r-x 2 oae 用户 4.0K Jul 31 14:21 ./ drwxr-x--x+ 9 oae root 4.0K Jul 26 13:59 ../ -rwx---r-x 1 oae 用户 90 年 8 月 3 日 11:22 hello.py* -rwx---r-x 1 oae 用户 225 8 月 3 日 11:22 index.php*

\n 字符不应显示。我该如何解决?

【问题讨论】:

  • 好的。问题是python脚本。我想我应该从脚本中解决这个问题。如果我使用 shell_exec('ls -la ./'),则 pre 方法有效。

标签: php python


【解决方案1】:

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

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

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

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

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

【讨论】:

    【解决方案2】:

    这是可行的

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

    【讨论】:

      【解决方案3】:

      另一种方法是将字符串包装在&lt;pre&gt;...&lt;/pre&gt; 标签之间。

      【讨论】:

        【解决方案4】:

        希望您尝试在 web.xml 中打印此字符串。 在这种情况下,PHP 可能无法使用 \n 字符,而是应该使用 &lt;br/&gt; PHP 有一个内置函数来处理字符串的这种转换。

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

        【讨论】:

        • 我试过了,但它只会将最后一个换行符转换为
        猜你喜欢
        • 1970-01-01
        • 2021-01-11
        • 2013-03-21
        • 2019-07-07
        • 1970-01-01
        • 1970-01-01
        • 2010-11-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多