Скрипт Python: печатать новую строку каждый раз в оболочку, а не обновлять существующую строку - PullRequest
3 голосов
/ 09 февраля 2009

Я нуб, когда дело доходит до питона. У меня есть скрипт Python, который дает мне вывод, как это:

[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

Последняя строка постоянно обновляется новыми значениями прогресса. Я хочу изменить это. Вместо обновления я хочу, чтобы каждый раз печаталась новая строка. Как я могу это сделать? Я думаю, что заинтересованная часть это бит:

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)

Если нужно увидеть больше кода, пожалуйста, дайте мне знать, чтобы я мог показать вам, что нужно для решения этой проблемы.

Большое спасибо за любую помощь.

Ответы [ 4 ]

3 голосов
/ 09 февраля 2009

Я думаю, вам, возможно, просто нужно изменить:

skip_eol=True

до:

skip_eol=False

и избавьтесь от "\r", чтобы увидеть, что происходит. Я думаю, вы будете приятно удивлены: -)

3 голосов
/ 09 февраля 2009

Если я правильно понимаю ваш запрос, вы сможете изменить эту функцию следующим образом:

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)

Это будет выводить вывод на новую строку каждый раз.

0 голосов
/ 09 февраля 2009

Эффект "обновления" достигается с помощью '\ r'.

Попробуйте это в оболочке Python (2.x):

print "00000000\r1111"

\ r просто возвращает курсор в начало строки.

0 голосов
/ 09 февраля 2009

Вы можете извлечь \ r, который перемещает курсор назад к началу строки, и, вероятно, удалить skip_eol = True. Может быть:

   self.to_stdout(u'[download] %s of %s at %s ETA %s' %
        (percent_str, data_len_str, speed_str, eta_str))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...