9
votes

Imprimer sans nouvelle ligne sous fonction ne fonctionne pas comme il se doit en python

Je fais une barre de progression pour mon script de téléchargement et je veux imprimer une ligne de multiples "#" mais je ne peux pas le faire fonctionner. Lorsque je dis Python de ne pas ajouter de nouvelle ligne, cela le supprimez, mais cela ne fonctionne pas comme prévu sous des fonctions. Utilisation "Imprimer ('#', End = '')" Dans Python 3 ou "Imprimer" # "", "Dans Python 2 le supprime, mais lorsqu'il est exécuté sous une fonction, il n'imprime rien avant que toute la fonction ne soit terminée, Il ne devrait pas attendre comme une impression normale.

import time

i = 0

def status():
    print('#', end='')

while i < 60:
    status()
    time.sleep(1)
    i += 1


3 commentaires

Pourquoi essayez-vous de réinventer des roues? pypi.python.org/pypi/fish


J'utilise une solution basée sur Ceci qui est très cool, imo: )


Truc cool. Mais ma progression est en fait un pénis pour que ma solution minimale fonctionne mieux :)


4 Réponses :


7
votes

Vous devez probablement rincer le tampon de sortie après chaque Invocation d'impression . Voir Comment chasser la sortie de Python Imprimer?


0 commentaires

0
votes

J'ai essayé votre code dans l'inactif pour 2.5. Donc, je devais utiliser le format d'impression comme - impression '#',

Voici ce que je reçois lorsque je l'exécute - le système imprime le symbole "#". À la fin de la boucle, j'obtiens le rapide au ralenti. Il me semble donc que cela fait ce que vous attendez.

Quelle version utilisez spécifiquement? Désolé je n'ai pas la version 3. Donc, je ne peux donc pas le tester là-bas.


1 commentaires

J'ai essayé Python 2.6.1 et Python 3.2 dans Terminal.app sur OS X.



0
votes

Vous pouvez toujours utiliser la fonction () .


0 commentaires

0
votes

Python fait tamponner la sortie jusqu'à une nouvelle ligne (ou jusqu'à une certaine taille), ce qui signifie que cela n'imprimera rien tant que le tampon ne reçoit pas de caractère de nouveau ligne \ n . En effet, l'impression est vraiment coûteuse en termes de performance, il est donc préférable de remplir un petit tampon et d'imprimer uniquement une fois de temps en temps.

Si vous voulez imprimer immédiatement, vous devez le rincer manuellement. Cela peut être fait en définissant l'argument de mots-clés sur true . xxx


0 commentaires