我試圖通過PHP執行POS標記的python腳本。 但它沒有返回完整的輸出。php exec缺少輸出
Python腳本:
import nltk
import sys
text = sys.argv[1]
tokenize_into_words = nltk.word_tokenize(text)
print text
result = nltk.pos_tag(tokenize_into_words)
print result
print "Done!"
PHP腳本
$cmd = 'python /Library/WebServer/Documents/varticle/vcmdpos.py ' . $string2;
$tmp = exec($cmd,$output);
print_r($output);
命令:
蟒蛇/Library/WebServer/Documents/varticle/vcmdpos.py科學家
觀測的輸出:
陣列([0] =>科學家)
預期輸出繼電器:
陣列([0] =>科學家[1] =>「[( ''科學家','NNS')]「[2] =>」完成!「)
當我手動運行命令時,它運行5-10秒左右。 [這可能是由於執行POS標記或導入nltk所需的時間造成的。]
但是,當通過PHP運行時,它立即返回並從nltk.pos_tag或print語句輸出後返回。
我錯過了什麼嗎?
$ tmp的價值是什麼,你確定$ string2被設置爲'科學家'?如果你在python腳本的頂部打印出什麼,會發生什麼? – 2012-04-15 08:05:12
@ msgmash.com $ tmp不會打印任何內容。頂部即nltk.pos_tag之前的任何內容都將被打印。 – vaichidrewar 2012-04-15 09:09:07
2>&1需要在命令中添加以獲得完整的輸出。 – vaichidrewar 2012-04-15 10:02:10