Question

Où aller faire stdout et stderr quand malédictions est actif?

import curses, sys

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

def curses_mode(stdscr):
    test_streams()

test_streams()
curses.wrapper(curses_mode)

sortie réelle est

stdout
stderr

Update0

Sortie prévue est

stdout
stderr
stdout
stderr

entrée, puis la sortie du mode de malédictions sans modification du texte final figurant dans le terminal.

Était-ce utile?

La solution

Activation malédictions enregistre des contenus actuels de l'écran de terminal texte et efface ledit écran; la sortie de malédictions le contenu restaure l'écran (jeter loin tout ce qui a été mis à l'écran sous le règne de malédictions lui-même). Essayez avec cette variante de votre code et vous verrez mieux ce qui se passe:

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")

Vous remarquerez la wrap stderr à l'écran pendant une seconde (pendant le sommeil) - il Écrasé la partie stdout - alors il disparaît et vous voyez les quatre avant et après des lignes sur l'écran maintenant quiescent (vous pouvez ajouter d'autres sommeils à suivre, si vous vous souciez ce qui se passe dans encore plus de détails).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top