Активация curses сохраняет текущее содержимое экрана терминала и очищает его; Выход из проклятий восстанавливает содержимое экрана (отбрасывая все, что было на экране во время самого проклятия). Попробуйте использовать этот вариант кода, и вы лучше увидите, что происходит:
import curses, sys, time
def test_streams(wot):
print wot, "stdout"
print >>sys.stderr, wot, "stderr"
def curses_mode(stdscr):
test_streams("wrap")
time.sleep(1.0)
test_streams("before")
curses.wrapper(curses_mode)
test_streams("after")
Вы заметите wrap stderr
на экране в течение секунды (во время сна) - он перезаписывает часть стандартного вывода - затем он исчезает, и вы видите четыре строки до и после на текущем покоящемся экране Вы можете добавить другие спящие, чтобы следить за тем, что происходит, даже более подробно, если вам это нужно.