2010-10-15 6 views
2

J'ai une application de statistiques écrite en python qui, sur une minuterie, actualise l'écran ssh avec des statistiques. À l'heure actuelle, il utilise os.system ('clear') pour effacer l'écran, puis affiche une donnée multi-lignes avec les statistiques.python - problème d'actualisation de plusieurs lignes stdout

Je voudrais juste faire un \ r au lieu d'exécuter le clear mais cela ne fonctionne qu'avec une ligne, est-ce possible de le faire avec plusieurs lignes?

Un exemple classique de ce que je veux faire est lorsque vous exécutez la commande "top" qui répertorie les processus en cours, il met à jour l'écran sans exécuter le "clear" et il a beaucoup de lignes.

Quelqu'un a des conseils pour cela?

+0

Pourriez-vous s'il vous plaît préciser: voulez-vous (1) clair et afficher seulement 1 page valeur de statistiques qui ont changé ou (2) clair et afficher uniquement le premier 1 valeur de la page des statistiques que votre programme génère? – inspectorG4dget

+0

l'option 1 serait géniale si c'est possible, l'option 2 fonctionnerait aussi bien. – Joe

Répondre

1

Il ne répond pas vraiment à votre question, mais il n'y a rien de mal à appeler os.system pour effacer le terminal (autre que le système fonctionnant sur différents systèmes d'exploitation) auquel cas vous pouvez utiliser:

os.system('cls' if os.name=='nt' else 'clear')

+1

La fonction appropriée dans le module de sous-processus doit être utilisée à la place de os.system. –

0

Pour des applications simples, vous pouvez utiliser:

print('\n' * number_of_lines) 

Pour plus avancé, il est le module curses dans la bibliothèque standard.

+0

cela fonctionne évidemment mais je ne veux pas juste effacer l'écran en écrivant de nouvelles lignes, tout ce que je veux, c'est l'écran actuel à mettre à jour. Exactement comme la commande "top" fonctionne sur Linux, il suffit de mettre à jour l'écran en cours sans effacer l'écran. – Joe

1

a résolu le problème avec:

import curses 
window = curses.initscr() 
window.addstr(1, 0, "my text") 
window.refresh() 
curses.endwin() 
Questions connexes