在哪里输出和错误走的时候诅咒是活动?

import curses, sys

def test_streams():
    print "stdout"
    print >>sys.stderr, "stderr"

def curses_mode(stdscr):
    test_streams()

test_streams()
curses.wrapper(curses_mode)

实际输出

stdout
stderr

Update0

预期输出是

stdout
stderr
stdout
stderr

进入,然后退出诅咒模式而没有变化到在终端中所示的最终文本。

有帮助吗?

解决方案

激活诅咒保存终端文本屏幕的当前内容,并清除所述屏幕;退出诅咒将还原屏幕内容(折腾掉诅咒本身的统治期间任何的被提上屏幕)。这种变异代码的尝试,你会看到更好发生了什么:

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(睡眠期间) - 它的覆盖标准输出的部分 - 然后消失在你面前以及将现在的静态画面上线后看到四个(你可以添加其他睡遵循正在发生的事情,甚至更多的细节,如果你愿意)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top