Letzte ungepufferte Zeile kann nicht gelesen werden

Ich versuche, die letzte Zeile eines Befehls wie 'apt-get download firefox' zu lesen. Normalerweise sieht die Ausgabe wie folgt aus:

Get:1 http://archive.ubuntu.com/ubuntu/ utopic/main firefox amd64 32.0+build1-0ubuntu2 [34.9 MB]
2% [1 firefox 646 kB/34.9 MB 2%]

, wobei die letzte Zeile ständig aktualisiert wird (es wird keine neue Zeile geschrieben, bis 100% erreicht sind). Mein Ziel ist es nun, den Fortschritt in Echtzeit zu lesen. Hier ist mein aktueller Beispielcode:

#!/usr/bin/python3 -u
# coding=utf-8

import subprocess, sys

pipe = subprocess.Popen(['apt-get', 'download', 'firefox'], 0, stderr = subprocess.PIPE, stdout = subprocess.PIPE)
while True:
    content = pipe.stdout.read(1).decode()
    if content == '':
        break
    sys.stdout.write(content)
    sys.stdout.flush()
pipe.wait()

Ich habe die Ausgabepufferung für den Unterprozessaufruf und auch für die binäre Ausgabe für den Python-Prozess deaktiviert (mit dem Argument -u). Aber ich bekomme nur die erste Zeile, aber nicht den Fortschritt der zweiten Zeile. Weiß jemand, wie ich das erreichen kann?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage