хотите удерживать процесс до тех пор, пока команда git в subprocess.popen не завершит свое выполнение - PullRequest
0 голосов
/ 20 марта 2019

Я новичок в python и простая задача - я делаю - извлекаю все ветки в git-репозитории и печатаю на консоли.

Я вижу ниже кусок кода работает нормально, но все время он дает мне различное количество списков веток для одного и того же хранилища, я вижу, что subprocess.popen () не блокируется, поэтому я пытался использовать wait () и общаться () для удерживайте выполнение, но wait () никогда не завершает процесс, а connect () выдает мне разное количество веток каждый раз, когда я запускаю код. (отличается от выполнения команды в 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 голосов
/ 20 марта 2019
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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...