Постоянно обновлять скрипт Python в консоли NppExec [Notepad ++] - PullRequest
2 голосов
/ 13 марта 2012

Я пишу скрипты Python с помощью NppExec / Notepad ++. Как обновить окно консоли при выполнении каждой строки кода Python? Например, следующий скрипт таймера:

#!usr/bin/env python
import time
import threading

class Timer(threading.Thread):
    def __init__(self, seconds):
        self.runTime = seconds
        threading.Thread.__init__(self)
    def run(self):
        counter = self.runTime
        for sec in range(self.runTime):
            print counter
            time.sleep(1.0)
            counter -= 1
        print "Done."

if __name__ == '__main__':
    t = Timer(10)
    t.start()

Когда я запускаю это в окне командной строки, оно обновляется каждую секунду. Но в консоли NppExec он обновляется только после выхода. Есть ли способ заставить консоль NppExec вести себя как командную строку и постоянно обновляться?

Ответы [ 2 ]

2 голосов
/ 13 марта 2012

Не знаком с тем, как это конкретное консольное приложение обрабатывает вывод, но stdout буферизируется по умолчанию, что, вероятно, является проблемой здесь. См. этот вопрос о способах его отключения.

1 голос
/ 30 апреля 2012

Все, что нужно сделать, это вызвать команду python -u для запуска скрипта, т.е. python -u timer.py вместо python timer.py

По умолчанию выводится на печать в небуферизованном режиме. Для пользовательской очистки выходных данных в более подробных программах определение stdout должно быть переписано .

...