当curses处于活动状态时,stdout和stderr去哪里?
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
进入然后退出诅咒模式,终端中显示的最终文本不会发生任何变化。
激活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
在屏幕上显示一秒钟(在睡眠期间)——它会覆盖标准输出部分——然后它消失,您会在现在静止的屏幕上看到前后四行(您可以添加其他睡眠来跟踪甚至发生的情况)如果您关心的话,请提供更多详细信息)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)