我有一个脚本,该脚本应该遍历我所有的项目(在指定的文件夹中)并调用git status
,我想在返回的标准输出中搜索特定的关键字,以检测该项目是否需要执行某些操作(提交,推送,合并...)。关键是,stdout是从当前运行的所有先前调用中堆叠的。因此,每个项目的标准输出还包含其他先前项目的响应!每次新呼叫后,我都无法刷新标准输出。我尝试了类似proc.stdout.flush()
的操作,但没有帮助。我当前的代码是:
import os
import subprocess
from subprocess import Popen, PIPE
from glob import glob
dirs = glob("./*/")
pointer = 0
for project in dirs:
print("\n\n", project)
try:
proc = Popen(['git', 'status'], stdout=PIPE, cwd=project)
print(proc.stdout.readlines())
except:
# not a git
pass
在每个步骤之后刷新stdout或在“新控制台”中调用Popen的正确方法是什么?