Форум сайта python.su
0
Пробовал искать, ничего не нашел - не знаю по каким словам:) Спрашиваю:
Чем реализуется такое поведение:
Консольное приложение должно выводить статистику сайта: (количество пользователей онлайн, количество ботов, последние 10 поисковых запросов). Данные получил. Как теперь их выводить в консоль, чтобы старые данные заменялись на новые?
Т.е. к примеру вывод приложения которое выводит случайное число и после обновляет его каждую секунду:
начало: 1493
1 секунда: (на месте числа 1493, новое допустим 548)
2 секунда: (на месте числа 548, новое….)
и т.д.
Какие модули или классы? Хотелось бы пример. Спасибо:)
И вот еще, допустим если добавить к этому приложению такую функцию:
при нажатии на кнопку R - обновление, а при нажатии на кнопку E - завершение приложения и при этом нужно удалить данные, которые выводило приложение(если реально), к примеру если мы в консоли до выполнения писали:
cd python-script
./monitoring (Запуск)
(Убирает все с консоли (две строчки выше), начинает выводить свой контент)
(при нажатии E, выходит и востанавливает в консоль строчки до вызова)
т.е. в итоге после завершения у нас в консоли чтобы осталось:
cd python-script
./monitoring
Отредактировано (Июль 5, 2011 13:46:18)
Офлайн
13
Nikser
Какие модули или классы? Хотелось бы пример. Спасибо:)
#!/usr/bin/python
import sys
import time
for i in xrange(100):
print "-> %03d" % i, "\r",
sys.stdout.flush()
time.sleep(1)
И вот еще, допустим если добавить к этому приложению такую функцию:Для стирания информации с экрана запустите ‘clear’, если у вас Линух или ‘cls’, если windows:
при нажатии на кнопку R - обновление, а при нажатии на кнопку E - завершение приложения и при этом нужно удалить данные, которые выводило приложение(если реально)
if platform.system() == 'Windows':
subprocess.call("cls", shell=True)
else:
subprocess.call("clear")
Офлайн
13
По поводу восстановления. Можно использовать ‘Alternate screen’. Думаю большинство линуховых терминалов это поддерживает.
Если уж очень хочется это сделать, то советую глянуть в исходники какого-нибудь less или аналогичной программы, которые это умеют. Они переключаются в альтернативный экран и выводят все туда, а по завершении возвращаются в исходных. Будет работать не везде, но много где.
PS: Вот, например, описание ‘Alternate screen’ xterm-a: http://www.xfree86.org/current/ctlseqs.html#The%20Alternate%20Screen%20Buffer
Отредактировано (Июль 5, 2011 16:42:02)
Офлайн