在Python中正确使用Popen,或类似的东西

时间:2012-03-27 19:02:21

标签: python popen

我是Python的新手,现在我要改变一个脚本,以便调用另一个程序并获得它的输出。我研究过,所有解决方案都指向

p = sub.Popen('echo '+s+' | ${morphg_res:-./morphg.ix86_linux -t}', shell=True,stdout=sub.PIPE,stderr=sub.PIPE )
out,err=p.communicate()
print out

但我无法让它发挥作用。 “打印出来”没有打印任何内容。

我使用

 os.system('echo '+s+' | ${morphg_res:-./morphg.ix86_linux -t}')

但这样我无法获得变形的输出。

另外,我并不完全理解第二部分的含义,但我知道它正确地调用了程序。只是输出是stdin,我需要它在变量中。

任何帮助?

P.S。:subprocess.check_output不是一个选项,因为我有Python 2.6。

1 个答案:

答案 0 :(得分:0)

试试这个:

import os
p = os.popen('echo '+s+' | ${morphg_res:-./morphg.ix86_linux -t}')
out = p.read()
print out