Domanda

Dove stdout e stderr andare quando maledizioni è attivo?

import curses, sys

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

def curses_mode(stdscr):
    test_streams()

test_streams()
curses.wrapper(curses_mode)

uscita effettiva è

stdout
stderr

Update0

risultato atteso è

stdout
stderr
stdout
stderr

ingresso, e quindi di uscire dalla modalità maledizioni senza modificare il testo finale mostrato nel terminale.

È stato utile?

Soluzione

Attivazione maledizioni salva contenuti e cancella attuali schermo del terminale di testo detto schermo; All'uscita maledizioni ripristina contenuti dello schermo (gettando via qualunque è stato messo sullo schermo durante il regno di maledizioni stesso). Provate con questa variante del codice e vedrete meglio cosa sta succedendo:

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

Potrai notare la wrap stderr sullo schermo per un secondo (durante il sonno) - E 'sovrascritto la parte stdout - poi scompare e si vede il quattro prima e dopo le linee sullo schermo ormai quiescente (è possibile aggiungere altri posti letto a seguire ciò che sta accadendo in anche ulteriori dettagli, se vi interessa).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top