59 votes

Comment écrire un indicateur de progression de téléchargement en Python ?

Je suis en train d'écrire une petite application pour télécharger des fichiers par http (comme, par exemple, décrit aquí ).

Je souhaite également inclure un petit indicateur de la progression du téléchargement, indiquant le pourcentage de la progression du téléchargement.

Voici ce que j'ai trouvé :

    sys.stdout.write(rem\_file + "...")    
    urllib.urlretrieve(rem\_file, loc\_file, reporthook=dlProgress)

    def dlProgress(count, blockSize, totalSize):
      percent = int(count\*blockSize\*100/totalSize)
      sys.stdout.write("%2d%%" % percent)
      sys.stdout.write("\\b\\b\\b")
      sys.stdout.flush()

Sortie : MonNomDeFichier... 9%

Avez-vous d'autres idées ou recommandations pour ce faire ?

Une chose qui est quelque peu ennuyeuse est le curseur clignotant dans le terminal sur le premier chiffre du pourcentage. Existe-t-il un moyen d'empêcher cela ? Existe-t-il un moyen de masquer le curseur ?

EDITAR:

Voici une meilleure alternative en utilisant une variable globale pour le nom de fichier dans dlProgress et le ' \r code :

    global rem\_file # global variable to be used in dlProgress

    urllib.urlretrieve(rem\_file, loc\_file, reporthook=dlProgress)

    def dlProgress(count, blockSize, totalSize):
      percent = int(count\*blockSize\*100/totalSize)
      sys.stdout.write("\\r" + rem\_file + "...%d%%" % percent)
      sys.stdout.flush()

Sortie : MonNomDeFichier...9%

Et le curseur apparaît à la FIN de la ligne. C'est beaucoup mieux.

0voto

mou Points 236

C'est comme ça que j'ai fait, ça pourrait vous aider : https://github.com/mouuff/MouDownloader/blob/master/api/download.py

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X