Pracuję nad prostym skryptem w języku Python, aby wykonać proste zadania w systemie. Niektóre z tych prac obejmują apt-get install
, aby zainstalować niektóre pakiety.Parsowanie wyjścia instalacji apt-get dla paska postępu
Podczas tej operacji chcę wyświetlić pasek postępu, który powinien zaktualizować się wraz z postępem pobierania, wykorzystując niewielki procent pokazany w interfejsie apt-get w terminalu.
ALE! Nie mogę znaleźć sposobu na uzyskanie informacji o postępach. Pipingowanie lub przekierowanie wyjścia apt-get daje tylko statyczne linie, które pokazują komunikat "ukończone pobieranie" dla każdego pakietu, i to samo dla odczytu za pomocą subprocess.Popen()
w moim skrypcie.
Jak mogę odczytać dane wyjściowe apt-get, aby uzyskać procenty pobranego pliku?
Jest szansa, że to może działać w moim porcie C, jak również przy użyciu posix popen()? Czy istnieje podobna metoda? –
'popen' pozwoli podprocesowi wiedzieć, że jego wyjście jest potokiem, więc prawdopodobnie masz pecha, z wyjątkiem poleceń, które są na tyle miłe, aby pozwolić ci zapytać ich o" pełne niebuforowane wyjście w czasie rzeczywistym i tak! " i nie sądzę, że apt-get jest w tej elitarnej grupie. Aby zaimplementować "fałszywy terminal" w C pod Linuksem, zacznij od strony podręcznika pty (7), np. na http://linux.die.net/man/7/pty - i, powodzenia (potrzeba dużo pracy!). –