Анализ выходных данных apt-get install для индикатора выполнения
-
18-09-2019 - |
Вопрос
Я работаю над простым скриптом Python с графическим интерфейсом для выполнения некоторых простых задач в системе.Часть этой работы включает в себя apt-get install
для установки некоторых пакетов.
Пока это происходит, я хочу отобразить индикатор выполнения, который должен обновляться по мере выполнения загрузки, используя небольшой процент, показанный в интерфейсе apt-get в терминале.
НО!Я не могу найти способ получить информацию о ходе выполнения.Передача или перенаправление выходных данных apt-get просто выдает статические строки, которые показывают сообщение "завершенная загрузка" для каждого пакета, и то же самое для чтения через subprocess.Popen()
в моем сценарии.
Как я могу прочитать из выходных данных apt-get, чтобы получить процент загруженного файла?
Решение
Как я часто говорил, используйте перспективный, не подпроцесс и т.д., для запуска подпроцессов, когда вам нужно получать их непрерывный вывод.pexpect обманывает подпроцесс, заставляя его поверить, что он запущен на терминале, поэтому подпроцесс будет выдавать именно тот вид вывода, который он выдавал бы на реальном терминале...и вы можете поймать это и преобразовать в любой необычный результат, который вы хотите!-)
Другие советы
Вместо того чтобы анализировать выходные данные apt-get, вы можете использовать python-apt для установки пакетов.AFAIK it также имеет модули для отчетности о прогрессе.