想要保留该进程,直到subprocess.popen中的git命令完成执行

时间:2019-03-20 10:40:47

标签: python git

我是python的初学者,我正在做的简单任务-获取git存储库中的所有分支并在控制台上打印。

我看到下面的代码运行良好,但是始终为同一存储库提供不同数量的分支列表,我看到subprocess.popen()是非阻塞的,所以我尝试使用wait()和communication()来保持执行,但是wait()永远不会结束进程,并且每次我运行代码时,communication()都会给我不同数量的分支。(与在git bash上运行命令不同)

存储库可能需要不同的时间来完成其执行。列出所有分支机构的任何帮助。

proc = subprocess.Popen(['git', 'ls-remote', '--heads' , url],
                        stdin = subprocess.PIPE,
                        stdout=subprocess.PIPE,
                        stderr=subprocess.STDOUT, shell=True)
while proc.poll() is None:
    out = proc.stdout.readline()
    print (out)
proc.communicate()

1 个答案:

答案 0 :(得分:0)

proc = subprocess.Popen(['git', 'ls-remote', '--heads' , url],
                        stdin = subprocess.PIPE,
                        stdout=subprocess.PIPE,
                        stderr=subprocess.STDOUT, shell=True)
for out in proc.stdout:
    print (out)

proc.wait()
proc.stdout.close()