أين تذهب Stdout و Stderr عندما تكون في وضع اللعنات؟

StackOverflow https://stackoverflow.com/questions/2233006

  •  19-09-2019
  •  | 
  •  

سؤال

أين تذهب 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

تحديث 0.

الناتج المتوقع هو

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 على الشاشة لثانية واحدة (أثناء النوم) - يتم الكتابة فوق الجزء Stdout - ثم تختفي وترى الرابع قبل وبعد خطوط وبعدها على الشاشة الهاتفة الآن (يمكنك إضافة نوام أخرى لمتابعة ما يحدث في حتى مزيد من التفاصيل، إذا كنت تهتم).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top