Domanda

Sto lavorando su un semplice script GUI Python di fare alcune semplici operazioni su un sistema. Alcuni di che il lavoro comporta apt-get install installare alcuni pacchetti.

Mentre questo sta accadendo, voglio visualizzare una barra di avanzamento che dovrebbe aggiornare con il progresso del download, con la piccola percentuale indicata nell'interfaccia di apt-get nel terminale.

MA! Non riesco a trovare un modo per ottenere le informazioni di avanzamento. Tubazioni o reindirizzare l'output di apt-get solo dà linee statiche che mostrano il messaggio "download completato" per ogni pacchetto, e lo stesso per la lettura tramite subprocess.Popen() nel mio script.

Come posso leggere da apt-get di uscita per ottenere le percentuali del file scaricato?

È stato utile?

Soluzione

Come ho detto spesso, utilizzare pexpect , non sottoprocesso ecc, a correre sotto-processi in cui è necessario ottenere la loro uscita continua. pexpect inganna il sottoprocesso a credere che è in esecuzione su un terminale, in modo che il sottoprocesso fornirà solo il tipo di output che avrebbe dato su un terminale vero e proprio ... e si può prendere e trasformarlo in qualsiasi tipo di uscita di fantasia che vuoi! - )

Altri suggerimenti

Invece di analizzare l'output del apt-get, è possibile utilizzare python-apt per installare i pacchetti. Per quanto ne so ha anche i moduli per la segnalazione dei progressi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top