Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 13, 2012 15:32:45

Mozart
От:
Зарегистрирован: 2011-12-12
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

sys.stdout

Всем привет, нужно что бы при работе скрипта одну строку заменяла другая, а не так что бы они печатались последовательно вниз. Так вот почему вот так работает -

import sys, time

for i in range(1, 101, 5):
sys.stdout.write("\r ... %s%%" % i)
sys.stdout.flush()
time.sleep(0.05)

А так нет?

import sys, time

for i in open("input.txt", "r").readlines():
sys.stdout.write("\r ... %s" % i)
sys.stdout.flush()
time.sleep(0.05)

Нужно что бы работал именно второй вариант. Спасибо.



Офлайн

#2 Авг. 13, 2012 15:49:44

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

sys.stdout

import sys, time
for i in open("input.txt", "r").readlines():
    sys.stdout.write("\r ... %s" % i.strip())
    sys.stdout.flush()
    time.sleep(0.05)



Офлайн

#3 Авг. 13, 2012 16:07:54

Mozart
От:
Зарегистрирован: 2011-12-12
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

sys.stdout

Спасибо, в таком виде работает, но в классах все равно не хочет почему то … Ну да ладно, мб потом разберусь …



Офлайн

#4 Авг. 13, 2012 17:41:55

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

sys.stdout

Mozart
А так нет?
Потому, что посмотри, что возвращает readlines(). Надо перенос строки откусывать.
Более того - readlines читает все в память.

import sys, time
for i in file("input.txt", "r"):
    print "\r ... %s%%" % i.rstrip('\r\n'),
    time.sleep(0.05)

Офлайн

#5 Авг. 13, 2012 19:30:34

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

sys.stdout

Еще можно (если файл в память убирается)

for line in f.read().splitlines():

Отредактировано reclosedev (Авг. 13, 2012 19:30:52)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version