2012-08-03 3 views
2

i ont un fichier php appelle un script et imprime la sortie comme celui-ciImprimer la sortie du script python correctement en PHP

 

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

il imprime;

 

    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' 

mais cela devrait être comme ceci;

 

    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* 

Les caractères ne doivent pas être affichés.Comment puis-je résoudre ce problème?

+0

ok. Le problème était le script python. Je pense que je devrais résoudre ce problème à partir du script. Les méthodes pré fonctionnent si j'utilise shell_exec ('ls -la ./'). –

Répondre

3

cela peut être le travail

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

J'espère que vous essayez d'imprimer cette chaîne dans le web. Dans ce cas, PHP peut ne pas fonctionner avec \ n caractères à la place il s'attend à être <br/> PHP a une fonction intégrée qui prend soin de cette transformation des chaînes.

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

+0

j'ai essayé ceci mais il convertit seulement le dernier caractère de nouvelle ligne à
. –

0

Une alternative serait d'enrouler la chaîne entre <pre>...</pre> balises.

+0

ne fonctionne pas. La sortie est la même. –

0

Il semble comme une sortie d'un script Python 3:

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

Le sous-processus retourne octets et la fonction d'impression imprime leur représentation en tant que b'...\n...' où \ n 'sont deux caractères (pas un saut de ligne).

Vous pouvez le réparer en convertissant qx() ou retourné à la valeur Unicode, puis l'impression en écrivant les octets comme il est:

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