където system() отпечатва изход на python в php?

Докато изпълнява един python скрипт от конзолата, Python отпечатва някои редове, например,..

hello,
World.
...
...

За показване на уеб страница с помощта на php, опитах..

exec("sudo -u username python temp.py  >> logdata.log")

И отпечатайте logdata.log. Но в това получавам неподреден изход на уеб страницата. Разбрах, че това е проблем с изтриване на данни.

Прочетох за командата system(), докато гугълнах, че тя изпълнява външна команда и отпечатва изход. И също така измива изхода, както се случва. Така че опитах..

system("sudo -u username Python temp.py")

Искам да знам къде отпечатва резултата.


person vnr1992    schedule 04.07.2013    source източник
comment
За извеждане на изрази, като изрази за отстраняване на грешки, от код на Python, силно препоръчвам да използвате модула logging на Python.   -  person Alex    schedule 04.07.2013


Отговори (1)


защо не използвате popen.

os.popen('sudo -u username Python temp.py').read()

или подпроцес, който е още по-добър: -

import subprocess
proc = subprocess.Popen('sudo -u username Python temp.py', stdout=subprocess.PIPE, shell=True)
(out, err) = proc.communicate()
print "program output:", out
person Avichal Badaya    schedule 04.07.2013
comment
Искам да стартирам python скрипт от php. Посочвате ли да направите друг скрипт и след това да го извикате от php? - person vnr1992; 04.07.2013
comment
да, можете да го направите. просто трябва да инжектирате този ред - exec(python ../xyz/abc.py, $output); - person Avichal Badaya; 04.07.2013