2013-03-22 4 views
-1

Я новичок в Python и у меня есть программа, ведьма некоторые король показывает процент в командной строке:Python sys.stdout.flush(), промойте каждую вещь, прежде чем она

sys.stdout.write("[") 

    for x in xrange(1,int(number)): 

     percentage = (x*100)/int(number) 
     numberfile.write(str(x)+'\n') 

     sys.stdout.write("\r%d%%" %percentage) 
     sys.stdout.flush() 

    sys.stdout.write("][Done]") 

но моя проблема функция промывки(), удалить все выходные перед ним и вне положенный что-то вроде этого:

100%] [Готово]

Как я могу изменить его

[100%] [Готово]

ответ

1

Вопрос не вровень, но "\ г" в

sys.stdout.write("\r%d%%" %percentage) 

Может быть, вы хотите

sys.stdout.write("\r[%d%%" %percentage) 
+0

символ «\ г» не может быть удален, то выход будет беспорядок и не может быть заменить «\ п», потому что Мне нужен вывод в той же строке. – 2013-03-22 11:26:20

0
sys.stdout.write("\r%d%%" %percentage) 

должно быть

sys.stdout.write("\r[%d%%]" %percentage) 

Чтобы избежать смешной дисплей:

[псевдокод]

for x in xrange(1,int(number)): 

    percentage = (x*100)/int(number) 
    numberfile.write(str(x)+'\n') 

    lastP = percentage 
    if (percentage > lastP) 
     sys.stdout.write("[%d%%]" %percentage); 
     sys.stdout.flush(); 
     lastP = percentage 
+0

выходы смешаны: «[99%] [99%] [99%] [99%] [99%] [99%] [99%] [99%] [99%] [99%] [99% ] [99%] [99%] [99%] [99%] [99%] [100%]] [Done] " – 2013-03-22 11:31:44

+0

Вы можете либо отложить перенос, либо удерживать проценты на другую переменную! напечатайте процент только текущего%> последнего%, считая, что current & last являются целыми значениями! –

+0

он работает спасибо. – 2013-03-22 11:35:17

Смежные вопросы