我正在构建一个Python curses应用程序。
我有两种方法可以输出到curses窗口:print x
和windows.addstr(x)
(以及其他类似的window.*
选项)。
然而,出于调试目的,我想能够打印到标准控制台,这样当我退出curses窗口时,我就有等待查看的信息。我通常会使用print x
,但那会在curses窗口中打印。
sys.stout.write()
也无法正常工作。
我该怎么做呢?
在使用os.fdopen
之后使用sys.stdout
后,这是回溯信息。
curses.nocbreak()
_curses.error: nocbreak() returned ERR
close failed in file object destructor:
sys.excepthook is missing
lost sys.stderr
sys.stdout.write()
吗?但是它也可能被重定向了,这种情况下你可以尝试使用open(1, 'w')
(fd 1 是标准输出)。 - Martijn Pieterssys.sdout.write()
也失败了。同时,open(1, 'w')
也失败了,它需要一个字符串作为文件名。 - ACarteros.fdopen
。无论如何,我认为你应该使用logging
模块并记录到文件中。 - Bakuriuprint
输出到标准输出以外的地方,我认为sys.stdout
已经被100%重定向了。 - jadkik94sys.stdout
被重定向了,因此尝试打开fd 1。对于Python 2来说,确实可以使用os.fdopen(1, 'w')
。 - Martijn Pieters