Python Script: каждый раз печатать новую строку для оболочки, а не обновлять существующую строку
Я пишу, когда дело доходит до python. У меня есть python script, который дает мне вывод следующим образом:
[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)
Если нужно увидеть больше кода, пожалуйста, дайте мне знать, чтобы я мог показать вам, что необходимо для решения этой проблемы.
Большое спасибо за любую помощь.
Ответы
Ответ 1
Если я правильно понимаю ваш запрос, вы должны изменить эту функцию:
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)
Это будет печатать вывод на новой строке каждый раз.
Ответ 2
Я думаю, вам просто нужно изменить:
skip_eol=True
в
skip_eol=False
и избавиться от "\r
", чтобы узнать, что произойдет. Я думаю, вы будете приятно удивлены: -)
Ответ 3
Вы можете вынуть \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))
Ответ 4
Эффект "обновления" достигается с помощью "\ r".
Попробуйте это в оболочке Python (2.x):
print "00000000\r1111"
\ r просто возвращает курсор в начало строки.