Texte de la Barre de Progression dans la Console
Est-il une bonne façon de faire les choses suivantes?
J'ai écrit une application console simple pour charger et télécharger des fichiers depuis un serveur FTP à l'aide de la ftplib.
À chaque fois quelques morceaux de données sont téléchargées, je veux mettre à jour un texte de la barre de progression, même si c'est juste un nombre.
Mais je ne veux pas effacer tout le texte qui a été imprimé à la console. (Faire un "clear" et l'impression de la mise à jour de pourcentage.)
vous pourriez tout aussi bien utiliser une interface graphique (qui vous permettront d'économiser plus de mal dans la fin, si vous commencez à faire quelque chose de progresser dans l'application), il n'est pas 1960 plus 😉
Hmm, ressembler à un double de cette question posée hier: stackoverflow.com/questions/3160699/python-progress-bar/3162864 Donc, vous devez utiliser des poissons pypi.python.org/pypi/fish
"il suffit d'utiliser une interface graphique" ne comprend pas que les Interfaces graphiques sont grands dans certaines situations (la courbe d'apprentissage rapide, ad-hoc exploratoire ou interactives ou des activités ponctuelles) tandis que les outils de ligne de commande sont parfaits pour les autres (les utilisateurs experts, la composition ad-hoc applications à la volée pour effectuer un soigneusement définis à l'opération plusieurs fois.)
J'ai voté pour la réouverture. La question ne me frappe pas comme trop large.
Hmm, ressembler à un double de cette question posée hier: stackoverflow.com/questions/3160699/python-progress-bar/3162864 Donc, vous devez utiliser des poissons pypi.python.org/pypi/fish
"il suffit d'utiliser une interface graphique" ne comprend pas que les Interfaces graphiques sont grands dans certaines situations (la courbe d'apprentissage rapide, ad-hoc exploratoire ou interactives ou des activités ponctuelles) tandis que les outils de ligne de commande sont parfaits pour les autres (les utilisateurs experts, la composition ad-hoc applications à la volée pour effectuer un soigneusement définis à l'opération plusieurs fois.)
J'ai voté pour la réouverture. La question ne me frappe pas comme trop large.
OriginalL'auteur bobber205 | 2010-07-04
Vous devez vous connecter pour publier un commentaire.
Voici un agrégat de nombreuses réponses ci-dessous que j'utilise régulièrement.
Exemple D'Utilisation:
Exemple De Sortie:
Intéressant de noter que l'UTF-8 de la déclaration n'est pas nécessaire, à moins que votre utilisation de Python 2 @Aubricus
Oui. Bon point! J'ai mis à jour l'essentiel avec une note.
SyntaxError: Non-ASCII du caractère '\xe2", sur la ligne 5, mais pas de l'encodage déclaré
Ce qui est écrit en Python 3 qui utilise l'encodage UTF-8 par défaut. Vous pouvez modifier le remplissage par défaut des paramètres de la fonction, qui est un des caractères UTF-8, ou d'utiliser l'UTF-8 de la déclaration. Voir le résumé dans le commentaire ci-dessus pour un exemple de ce que l'UTF-8 de la déclaration devrait ressembler.
OriginalL'auteur Greenstick
Écrit '\r' replacer le curseur au début de la ligne.
Cette affiche un pourcentage de compteur:
Édité, essayez
sys.stdout.write
Cet exemple génère également un OBOB elle se termine le chargement à
99%
Il est synonyme de "Hors d'un bug"
Pour ajouter à ce que @IoannisFilippidis dit,
print
a aussi unflush
argument: docs.python.org/3/library/functions.html#printOriginalL'auteur Stephen
tqdm: ajouter une barre de progression de vos boucles dans un deuxième:
Ce que le python shell utilisez-vous?
le lien dit c'est ptpython
OriginalL'auteur jfs
Écrire un
\r
à la console. C'est un "retour chariot" qui provoque tout le texte après qu'il soit fait l'écho au début de la ligne. Quelque chose comme:qui vous donnera quelque chose comme:
[ ########## ] 100%
\r
, puis d'écrire l'ensemble de la ligne. En gros:print("\rProgress: [{0:50s}] {1:.1f}%".format('#' * int(amtDone * 50), amtDone * 100))
, oùamtDone
est un flottant entre 0 et 1.Mieux utiliser
sys.stdout.write
queprint
. Avecprint
j'ai eu des retours à la ligne.ajouter une virgule
,
à la fin de laprint
fonctionne pour moi.en python3 utiliser print(...., end=") et vous n'aurez pas de retours à la ligne
Résumé pour Python3 ancien contribs:
print("\rProgress: [{0:50s}] {1:.1f}%".format('#' * int(workdone * 50), workdone*100), end="", flush=True)
, oùworkdone
est un flottant entre 0 et 1, par exemple,workdone = parsed_dirs/total_dirs
OriginalL'auteur aviraldg
Il est à moins de 10 lignes de code.
L'essentiel ici: https://gist.github.com/vladignatyev/06860ec2040cb497f0f3
pour moi il va dans une nouvelle ligne
quel système d'exploitation/plateforme utilisez-vous?
Je ne sais pas pourquoi si je le lance à partir de spyder ide il ne fonctionne pas, mais si je le lance à partir de ipython console ça marche!!!
OriginalL'auteur Vladimir Ignatyev
Essayer le cliquez sur bibliothèque écrite par Mozart de Python, Armin Ronacher.
Pour créer une simple barre de progression:
C'est à quoi il ressemble:
Personnaliser à votre contenu de coeurs:
Look Custom:
Il y a encore plus d'options, consultez la Les docs de l'API:
Sont ceux mégots? ಠ_ಠ
Je n'ai pas l'intention de représenter quoi que ce soit. Semble comme il représente un Rorshcach test :/
Tu m'as eu au look Custom... +1
Cette réponse me fissures jusqu'autant que la première fois je l'ai trouvé. Et super utile aussi 🙂
OriginalL'auteur The Unfun Cat
Je me rends compte que je suis en retard pour le jeu, mais voici un peu de Yum-style (Red Hat) celui que j'ai écrit (ne pas aller pour une précision de 100% ici, mais si vous utilisez une barre de progression pour ce niveau de précision, alors vous avez TORT de toute façon):
Devrait produire quelque chose qui ressemble à ceci:
... où les supports de rester immobile et seul le hachage augmentation.
Ce pourrait mieux travailler comme décorateur. Pour un autre jour...
OriginalL'auteur JoeLinux
Consulter cette bibliothèque: clint
il a beaucoup de fonctionnalités, y compris une barre de progression:
ce lien fournit un aperçu rapide de ses fonctionnalités
OriginalL'auteur scripts
Voici un bel exemple d'une progressbar écrit en Python: http://nadiana.com/animated-terminal-progress-bar-in-pythonMais si vous voulez l'écrire vous-même. Vous pouvez utiliser le
curses
module pour faciliter les choses 🙂[modifier]
Peut-être plus facile n'est pas la parole de malédictions. Mais si vous voulez créer un véritable cui que les malédictions prend soin de beaucoup de choses pour vous.
[modifier]
Depuis l'ancien lien est mort, j'ai mis en place ma propre version de Python Progressbar, l'obtenir ici: https://github.com/WoLpH/python-progressbar
curses
? Plus facile? Hmmm....Un excellent article, j'allais donner un lien vers elle, mais ne pouvait pas trouver dans mes favoris 🙂
Dasgupta: assez juste, plus facile peut-être pas le mot juste ici. Il peut vous faire économiser beaucoup de travail, mais cela dépend vraiment de ce que vous cherchez.
Ne cherche pas pour rien près de cette impliqués, mais merci quand même. 🙂
Lien mort, c'est le prix de ne pas poster le lien ed contenu dans votre réponse -__-
OriginalL'auteur Wolph
sortie
[ 29% ] ===================
OriginalL'auteur ashish2py
et, juste pour ajouter à la pile, voici un objet que vous pouvez utiliser
résultats dans:
Ce serait plus couramment être considéré comme "over the top", mais c'est très pratique lorsque vous êtes en utilisant un lot de
J'adore!!! Assez facile à utiliser!!! Merci
OriginalL'auteur FraggaMuffin
Exécuter ce au Python en ligne de commande (pas dans les IDE ou les environnement de développement):
Fonctionne très bien sur mon système Windows.
OriginalL'auteur PaulMcG
Installer
tqdm
.(pip install tqdm
)et de l'utiliser comme suit:
Que c'est un 10 secondes de la barre de progression qui va de la sortie de quelque chose comme ceci:
OriginalL'auteur Tux
Et beaucoup de tutoriels en attente d'être googlé.
OriginalL'auteur Andy Mikhaylenko
Je suis en utilisant les progrès de reddit. Je l'aime parce qu'il peut la progression de l'impression pour chaque élément dans une ligne, et il ne devrait pas effacer les impressions à partir du programme.
Edit: correction du lien
Cette variante a le meilleur design à mon goût: il utilise les itérateurs et les travaux éventuellement avec n'importe quel type de mesurable de travail, il indique le temps écoulé.
OriginalL'auteur Ib33X
basé sur les réponses ci-dessus et d'autres questions similaires à propos de la CLI de la barre de progression, je crois que j'ai un général de la commune de la réponse à toutes et tous. Vérifier à https://stackoverflow.com/a/15860757/2254146
En résumé, le code est: est-ce
Ressemble
% : [##########] 99.0%
OriginalL'auteur Brian Khuu
Je recommande d'utiliser tqdm - https://pypi.python.org/pypi/tqdm - ce qui le rend simple pour transformer n'importe quel itérable ou le processus dans une barre de progression, et gère tous les faire du tort à des terminaux nécessaires.
À partir de la documentation: "tqdm peut facilement prendre en charge les rappels/crochets et des mises à jour manuelles. Voici un exemple avec urllib"
OriginalL'auteur Malcolm Box
Essayer d'installer ce paquet:
pip install progressbar2
:progresssbar github: https://github.com/WoLpH/python-progressbar
OriginalL'auteur Chris Cui
REMARQUE: si vous exécutez cette interactives interepter vous obtenez plus de numéros imprimés
OriginalL'auteur Ramchandra Apte
lol j'ai juste écrit un truc pour ce
heres le code de garder à l'esprit que vous ne pouvez pas l'utiliser unicode lors de bloc ascii-je utiliser cp437
et vous l'appelez comme
de sorte qu'il ressemble à ceci
OriginalL'auteur ryan
Avec les grands conseils ci-dessus je travaille la barre de progression.
Cependant, je tiens à souligner certaines lacunes
À chaque fois que la barre de progression est vidé, il va commencer sur une nouvelle ligne
comme ceci:
[] 0%
[#]10%
[##]20%
[###]30%
2.Le crochet ']' et le pourcentage de nombre sur la droite décalage à droite comme le "# # # " obtenir plus.
3. Une erreur se produit si l'expression "progrès /10' ne peut pas retourner un entier.
Et le code suivant va résoudre le problème ci-dessus.
OriginalL'auteur Storm-Eyes
Une solution très simple est de mettre ce code dans votre boucle:
Mettre ceci dans le corps (c'est à dire en haut) de votre fichier:
Mettre cela dans le corps de la boucle:
OriginalL'auteur Richard Hayman-Joyce
Code python terminal barre de progression
OriginalL'auteur emd_22
Mettre ensemble certaines des idées que j'ai trouvé ici, et en ajoutant de temps estimé à gauche:
OriginalL'auteur Ivan Chaer
Bien voici le code qui fonctionne et je l'ai testé avant de poster:
Pour:
Contre:
prog2 = prog/5
àprog2 = int(prog/5)
)OriginalL'auteur Cold Diamondz
Voici mon Python 3 solution:
'\b' est une barre oblique inverse, pour chaque caractère dans la chaîne.
Cela ne fonctionne pas dans Windows, fenêtre cmd.
OriginalL'auteur Matt-the-Bat
fonction de Greenstick pour 2.7:
OriginalL'auteur Edmond de Martimprey
Le module python progressbar est un bon choix.
Voici mon code par défaut:
OriginalL'auteur Aimin Huang
https://pypi.python.org/pypi/progressbar2/3.30.2
Progressbar2 est une bonne bibliothèque pour ascii de base progressbar pour la ligne de commande
le délai d'importation
importation progressbar
https://pypi.python.org/pypi/tqdm
tqdm est une alternative de progressbar2 et je pense que c'utilisation dans pip3 mais je n'en suis pas sûr
OriginalL'auteur Antoine Boucher
j'ai écrit une barre de progression simple:
comme vous pouvez le voir, il ont: longueur de la barre, le préfixe et le suffixe, de remplissage, de l'espace, du texte dans la barre de 100%(oncomp) et les frontières
voici un exemple:
en cours:
sur complet:
OriginalL'auteur jenkins