我也是 python 编程和编程的新手。如果这听起来是一个基本问题,请原谅。
我正在开发一个在 git 上执行 make clean 和 make 的工具。
我正在使用 subprocess 模块来运行这些 make 命令。
一项观察是:我使用通信来查看 make 命令的结果。沟通的问题是,它等待 subprocess.popen 完成然后发送输出。
如果 make 命令运行 30 分钟,则屏幕上没有输出 30 分钟,然后通信发送它在 30 分钟内收集的全部数据。
问题是:有没有办法在标准输出上显示某些内容时从子进程获取输出,然后在屏幕上打印出来?
到目前为止我写的代码是:
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
对此有什么想法吗?我尝试使用 pexpect.run() 但这对我不起作用......
-维杰