Comment ajouter des lignes à la sortie stdout? En d'autres termes, lorsque j'écris sur stdout, je veux que la sortie qui a déjà été imprimée soit «poussée» vers le bas, puis ajouter la sortie suivante.Ajoute une ligne à la sortie stdout en Python pour tenter d'afficher une animation en chute libre
Répondre
Vous ne pouvez pas faire cela simplement en gérant directement stdout. Stdout est un objet fichier. Dans les fichiers ordinaires, les objets seek
peuvent être utilisés. Cependant, comme tout est affiché dans le terminal aussi vite qu'ils sont écrits, la recherche d'appel n'affecte pas ce qui a déjà été affiché. Toutefois, avec une bibliothèque de terminaux appropriée telle que curses, vous pouvez afficher des caractères de contrôle qui manipulent la position du curseur et vous permettre de modifier le contenu du texte n'importe où dans la console.
Notez que curses est une bibliothèque assez bas niveau. Pour votre cas spécifique d'animation, il peut être judicieux d'utiliser une bibliothèque de plus haut niveau telle que asciimatics.
Il existe également d'autres bibliothèques, mentionnées dans [ce fil] (https://stackoverflow.com/questions/8349085/python-ncurses-cdk-urwid-difference). – Gribouillis
Stocker la valeur initiale à la liste,
alors jusqu'à ce que votre condition est satisfaite,
- ajouter le nouveau contenu à la liste
rejoindre les données avec ' \ '
C'est,
import sys
arr = ['start line',]
while some_condition_till_you_want_to_write:
arr.append('some new content')
print "\n".join(arr)
sys.stdout.flush()
Merci, mais je dois le faire continuellement – minychillo
pour ce faire en continu, mettre True pour tout bloquer et utiliser la file d'attente à l'intérieur. Si la file d'attente n'est pas vide, extraire les éléments de la file d'attente et les imprimer, sinon ne pas imprimer. Et écrire une fonction, qui mettra les éléments dans la file d'attente. –
Seriez-vous en mesure de nous montrer votre code ou de décrire plus en détail ce qui est votre cas d'utilisation pour cela. – jsalonen
Il ressemblera à un livre écrit avec les lignes dans l'ordre inverse. Ce n'est pas très convivial. – Gribouillis
Je veux réellement simuler des gouttes tombant dans la console. Mais, le «pourquoi» n'est pas important :) le «comment» est ce que je demande? – minychillo