2009-02-09 7 views
3

Je suis un noob quand il s'agit de python. J'ai un script python qui me donne une sortie comme ceci:Script Python: Imprime une nouvelle ligne chaque fois pour shell plutôt que pour mettre à jour la ligne existante

[last] ZVZX-W3vo9I: Downloading video webpage 
[last] ZVZX-W3vo9I: Extracting video information 
[download] Destination: myvideo.flv 
[download] 9.9% of 10.09M at 3.30M/s ETA 00:02 

La dernière ligne ne cesse de se mis à jour avec de nouvelles valeurs de progrès. Je veux changer ça. Au lieu de mettre à jour je veux qu'une nouvelle ligne soit imprimée à chaque fois. Comment puis-je faire ceci? Je pense que la partie concernée est ce bit:

def report_progress(self, percent_str, data_len_str, speed_str, eta_str): 
    """Report download progress.""" 
    self.to_stdout(u'\r[download] %s of %s at %s ETA %s' % 
     (percent_str, data_len_str, speed_str, eta_str), skip_eol=True) 

Si plus de code doit être vu s'il vous plaît laissez-moi savoir afin que je puisse vous montrer ce qui est nécessaire pour résoudre ce problème.

Merci beaucoup pour votre aide.

Répondre

3

Si je comprends bien votre demande, vous devriez être en mesure de changer cette fonction à ceci:

def report_progress(self, percent_str, data_len_str, speed_str, eta_str): 
    """Report download progress.""" 
    print u'[download] %s of %s at %s ETA %s' % (percent_str, data_len_str, speed_str, eta_str) 

qui imprimera la sortie sur une nouvelle ligne à chaque fois.

+0

Merci. Travail terminé. :) – Abs

+0

Le \ devient alors redondant, mipadi. Il était seulement utilisé pour revenir au début de la ligne. – paxdiablo

3

Je pense que vous aurez juste besoin de changer:

skip_eol=True 

à:

skip_eol=False 

et se débarrasser de la "\r" pour voir ce qui se passe. Je pense que vous serez agréablement surpris :-)

0

Vous pouvez enlever le \ r, qui revient au curseur au début de la ligne et supprime le skip_eol = True probablement. Peut-être:

self.to_stdout(u'[download] %s of %s at %s ETA %s' % 
     (percent_str, data_len_str, speed_str, eta_str)) 
0

L'effet "mise à jour" est obtenu par "\ r".

Essayez ceci dans un shell Python (2.x):

print "00000000\r1111" 

\ r retourne juste le curseur au début de la ligne.

Questions connexes