我是python编程和编程的新手。所以请原谅,如果这听起来是一个基本的问题。你知道吗
我正在开发一个工具,当然可以在git上执行makeclean和make。你知道吗
我正在使用子进程模块来运行这些make命令。你知道吗
一个观察结果是:我使用communicate查看make命令的结果。通信的问题是,它等待子流程.popen完成,然后发送输出。你知道吗
如果make命令运行30分钟,则屏幕上30分钟内没有输出,然后communicate发送它在30分钟内收集的全部数据。你知道吗
问题是:有没有一种方法可以在stdout上显示某个内容时从子进程获取输出,然后在屏幕上打印出来?你知道吗
到目前为止,我编写的代码是:
def makeClean(path,cmd1='make',cmd2='clean'):
print '+++++++++++ RUNNING MAKE CLEAN +++++++++++ \n'
c = subprocess.Popen([cmd1 , cmd2],stdout = subprocess.PIPE, stderr = subprocess.PIPE,cwd = path)
out = c.communicate()[0]
for line in out.split('\r\n'): print line
有什么想法吗?我试着用预期运行()但这对我不起作用。。。你知道吗
-维杰
如果输出应该转到stdout,那么不要将其重定向回调用进程。只是
就行了。如果确实需要以某种方式处理输出,则不要使用
communicate
,而是直接从管道中读取:相关问题 更多 >
编程相关推荐