Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 27, 2010 18:49:52

sumrak_ss
От:
Зарегистрирован: 2009-11-21
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Консольное приложение

Javad
А реально сделать в консоли что-то вроде прогрессбара?К примеру,нужно в процентах выводить обработку файла,но если это делать простым print'ом,то некрасиво как-то выходит: слишком много лишних строк выводит
from itertools import cycle
import sys
from time import sleep


class ProgressBar(object):
"""Visualize a status bar on the console."""

def __init__(self, max_width):
"""Prepare the visualization."""
self.max_width = max_width
self.spin = cycle(r'-\|/').next
self.tpl = '%-' + str(max_width) + 's ] %c %5.1f%%'
show(' [ ')
self.last_output_length = 0

def update(self, percent):
"""Update the visualization."""
# Remove last state.
show('\b' * self.last_output_length)

# Generate new state.
width = int(percent / 100.0 * self.max_width)
output = self.tpl % ('-' * width, self.spin(), percent)

# Show the new state and store its length.
show(output)
self.last_output_length = len(output)


def show(string):
"""Show a string instantly on STDOUT."""
sys.stdout.write(string)
sys.stdout.flush()

def percentize(steps):
"""Generate percental values."""
for i in range(steps + 1):
yield i * 100.0 / steps

if __name__ == '__main__':
# An example progress bar with 40 segments,
# filled in 20 steps, updated every 0.1 seconds.
sb = ProgressBar(40)
for percent in percentize(20):
sb.update(percent)
sleep(0.1)
show('\n')
raw_input()
А вообще примеров полно http://www.google.ru/search?client=opera&rls=ru&q=progressbar+in+console+python&sourceid=opera&ie=utf-8&oe=utf-8



Офлайн

#2 Фев. 28, 2010 05:34:50

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

Консольное приложение

sumrak_ss,большущее спасибо.Жаль нормально работает она только в системной консоли



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version