我对Python完全陌生,现在我必须更改脚本,以便调用另一个程序并获取它的输出。我已经研究过了,所有的解决方案都指向类似在Python中正确使用Popen,或者类似的东西
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}')
工作,但这种方式我不能让morphg的输出。
此外,我不完全明白第二部分是什么意思,但我知道它正确地调用该程序。只是输出是stdin,我需要它在一个变量中。
任何帮助?
P.S .: subprocess.check_output不是一个选项,因为我有Python 2.6。
它通常被认为是一个坏主意,用个“shell =真”,并命令字符串传递给POPEN(出于同样的原因是使用使用os.system的()和老的popen *()函数是不鼓励的,因为有一些'(back tick)和$()(命令替换)以及其他可以插入命令的字符串导致意想不到的后果)。最好将shell = False(缺省值)并传递一个列表(向量):['echo',s] ---尽管如此,您必须为此示例设置多个进程并自己安排管道。 – 2012-03-27 19:10:45
我已经读过,但我不知道该怎么做。= P – elithin 2012-03-27 19:16:02