python打印在使用诅咒后无法正常运行

python打印在使用诅咒后无法正常运行,python,curses,python-2.5,Python,Curses,Python 2.5,我用诅咒创建了一个简单的gui。但是,当curses菜单完成时,打印功能不会在屏幕上打印任何内容,直到主程序退出 在下面的示例中,当运行calc.py时,文本“Directory list ok”将在运行foo(calcDirs)后打印到屏幕上。如果我注释掉行folderSelection.menu(dirs),文本将像通常一样打印到屏幕上。有什么想法吗?我使用Python2.5 计算量: import folderSelection [...] calcDirs=folderSelection

我用诅咒创建了一个简单的gui。但是,当curses菜单完成时,打印功能不会在屏幕上打印任何内容,直到主程序退出

在下面的示例中,当运行calc.py时,文本“Directory list ok”将在运行foo(calcDirs)后打印到屏幕上。如果我注释掉行
folderSelection.menu(dirs)
,文本将像通常一样打印到屏幕上。有什么想法吗?我使用Python2.5

计算量:

import folderSelection
[...]
calcDirs=folderSelection.menu(dirs)
print "Directory list ok"
foo(calcDirs)
folderSelection.py:

import curses
def menu(folders):
    global scr
    scr = curses.initscr()
    curses.noecho()      # Do not echo keypresses
    curses.cbreak()      # No enter required
    scr.keypad(1)   # Support keypad
    curses.curs_set(0)   # Do not show the cursor

    # Do some calculations
    [...]

    exitCurses()
    return calcDirs

def exitCurses():
    global scr
    curses.nocbreak()
    curses.curs_set(1)
    scr.keypad(0)
    curses.echo()
    curses.endwin()

编辑:似乎文本必须延迟到程序终止。它可能只是延迟30-40秒

我遇到了类似的问题。似乎curses对stdout上的输出缓冲区做了一些事情。我认为这是在增加输出缓冲区的大小,或者设置缓冲输出模式

重新打开缓冲区大小为零的stdout可能会修复它

sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)

在“诅咒”返回后,但在打印任何内容之前,请尝试这样做。

我遇到了类似的问题。似乎curses对stdout上的输出缓冲区做了一些事情。我认为这是在增加输出缓冲区的大小,或者设置缓冲输出模式

重新打开缓冲区大小为零的stdout可能会修复它

sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
在诅咒返回后,但在打印任何内容之前,尝试一下