我正在尝试通过PHP执行用于POS标记的python脚本。 但它没有返回完整的输出。
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);
命令:
python /Library/WebServer/Documents/varticle/vcmdpos.py科学家
观察到的输出:
数组([0] =>科学家)
预期输出:
数组([0] =>科学家[1] =>“[('科学家','NNS')]”[2] =>“完成!”)
当我手动运行命令时,它会跑5到10秒左右。 [这可能是由于进行POS标记或导入nltk所需的时间。]
但是当通过PHP运行时,它会在没有返回后立即从nltk.pos_tag或print语句返回并输出。
我错过了什么吗?
答案 0 :(得分:3)
2>& 1以获得完整输出。 这解决了我的问题。
答案 1 :(得分:0)
尝试使用shell_exec - 或者,如果你想拥有更多控制权,可以使用proc_open而不是exec()。