Sortie Parsing apt-get install pour la barre de progression
-
18-09-2019 - |
Question
Je travaille sur un simple script Python GUI pour faire quelques tâches simples sur un système. Une partie de ce travail consiste à apt-get install
installer des paquets.
Bien que cela se passe, je veux afficher une barre de progression qui devrait mettre à jour avec la progression du téléchargement, en utilisant le petit pourcentage indiqué dans l'interface apt-get dans le terminal.
MAIS! Je ne peux pas trouver un moyen d'obtenir les informations de progression. La tuyauterie ou de rediriger la sortie de apt-get juste donne des lignes statiques qui montrent le message « Téléchargement terminé » pour chaque paquet, et même pour la lecture via subprocess.Popen()
dans mon script.
Comment puis-je lire la sortie de apt-get pour obtenir les pourcentages du fichier téléchargé?
La solution
Comme je l'ai souvent dit, utilisez pexpect , pas etc subprocess, pour exécuter des sous-processus lorsque vous avez besoin pour obtenir leur sortie continue. pexpect fous le sous-processus en leur faisant croire qu'il est en cours d'exécution sur un terminal, de sorte que le sous-processus fournira le genre de sortie, il donnerait un vrai terminal ... et vous pouvez l'attraper et le transformer en une sorte de sortie de fantaisie que vous voulez! - )
Autres conseils
Au lieu d'analyser la sortie de l'apt-get, vous pouvez utiliser python-apt pour installer des paquets. Autant que je sache, il a aussi des modules pour rendre compte des progrès.