2017-01-06 1 views
0

J'ai deux fonctions prints() et clear(). La fonction prints() lignes d'impression de texte et la fonction clear() supprimer les lignes imprimées avec cette méthode:sys.stdout.write ne fonctionne pas comme prévu en Python

def clear(): 
    i = 0 
    while True: 
     if(i > globals['l']): 
      break 
     else: 
      sys.stdout.write("\033[F \033[K") 
      i += 1 

globals['l'] est le nombre de lignes à effacer.

Puis, après la fonction clear() fonctionne et les lignes sont effacées, la fonction prints() réexécutez etc ...

Je ne comprends pas pourquoi la fonction clear() est de compensation seulement 22 lignes de 32 lignes. Mais si j'ai, par exemple, 19 lignes, cela fonctionne parfaitement. Où est le problème? Comment puis-je réparer cela?

+0

En aparté, cette pourrait être un one-liner: dit.stdout.writ e ("\ 033 [F \ 033 [K" * l) – tdelaney

+0

Merci pour le conseil, mais le problème est toujours là –

Répondre

2

Essayez ceci:

def clear(line_count): 
    sys.stdout.write("\033[F \033[K" * line_count) 
    sys.stdout.flush() 
+0

Toujours le même problème ... –

0

EDIT: Fonctionne uniquement sur les systèmes Unix

Vous pouvez utiliser:

print("\033c") 

Ou:

import subprocess 
subprocess.call(["printf", "\033c"]) 
+0

Utilisé bot, ne fonctionne pas –

+0

il fonctionne uniquement sur les systèmes Unix, je essayé plusieurs alternatives pour Windows, mais je n'ai pas trouvé la solution –