Уведомления

Группа в Telegram: @pythonsu

#1 Июль 21, 2009 22:07:49

Ankx
От:
Зарегистрирован: 2009-07-04
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Красивый вывод в консоли.

Господа подскажите какие есть способы краиво выводить текст в консоли. То есть я не про возможности функции print спрашиваю. Наверное проще всего объяснить откуда взялся этот вопрос, чтобы было понятно о чем он вообще. Я, честно говоря, с консолью дело имел до этого очень давно еще в седьмом (вроде) Turbo Pascal-е, когда только постигал азы программирования, там сколько мне помниться были функции, например, для очистки экрана, для вывода символа по координатам(вроде 5 строка, 3 символ) и т.п. есть что-то подобное в python?
Ну часть проблем решаются управляющими послкдовательностями (там \r \b \t …), а как например вывести что-то вроде пргресс бара, чтобы на обном месте набегали проценты? Отчасти помогает sys.stdout.write, который в отличие от print не добавляет перевод строки в конец выводимого и \r с \b. Но как-то это кривовато выглядит…



Офлайн

#2 Июль 22, 2009 10:26:13

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

Красивый вывод в консоли.

возможно поможет curses



Офлайн

#3 Авг. 18, 2011 20:22:01

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

Красивый вывод в консоли.

truporez
возможно поможет curses
а есть ли более удобный инструмент? к примеру, чтобы управлять положением каретки перед вызовом stdout.write, либо просто какая-нибудь функция, позволяющая выводить текст в заданной позиции экрана?



Офлайн

#4 Авг. 18, 2011 20:56:38

shep
От:
Зарегистрирован: 2011-07-02
Сообщения: 19
Репутация: +  2  -
Профиль   Отправить e-mail  

Красивый вывод в консоли.

Для Windows особенно ничего нет
Для прогресс бара в консоли могу предложить такой модуль:

#progressbar.py
import sys
'''
Problem
Your program has no GUI (i.e., your program just runs on a text console), and yet you want your program to show to the user a "progress indicator bar" during lengthy operations, to communicate that work is progressing and the amount of the total work that has been completed.

Solution
We can easily code a simple little class to handle this whole task:
'''
class progressbar(object):
def __init__(self, finalcount, block_char='.'):
self.finalcount = finalcount
self.blockcount = 0
self.block = block_char
self.f = sys.stdout
if not self.finalcount: return
self.f.write('\n------------------ % Progress -------------------1\n')
self.f.write(' 1 2 3 4 5 6 7 8 9 0\n')
self.f.write('----0----0----0----0----0----0----0----0----0----0\n')
def progress(self, count):
count = min(count, self.finalcount)
if self.finalcount:
percentcomplete = int(round(100.0*count/self.finalcount))
if percentcomplete < 1: percentcomplete = 1
else:
percentcomplete=100
blockcount = int(percentcomplete//2)
if blockcount <= self.blockcount:
return
for i in range(self.blockcount, blockcount):
self.f.write(self.block)
self.f.flush( )
self.blockcount = blockcount
if percentcomplete == 100:
self.f.write("\n")
if __name__ == "__main__":
from time import sleep
pb = progressbar(8, "*")
for count in range(1, 9):
pb.progress(count)
sleep(0.2)
pb = progressbar(100)
pb.progress(20)
sleep(0.3)
pb.progress(47)
sleep(0.3)
pb.progress(90)
sleep(0.3)
pb.progress(100)
print "testing 1:"
pb = progressbar(1)
pb.progress(1)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version