我试图通过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