转储将窗口输出curses到python中的文件

时间:2015-01-24 02:37:19

标签: python ncurses python-curses

我试图将curses窗口的输出转储到文件中而不在stdout上显示它。目前我使用addstr()函数在stdout上打印,最后我调用instr()函数将整个屏幕转储到一个文件中。在某些情况下,ncurses在xterm上无法正常工作,因此我需要将输出重定向到文件而不在stdout上实际打印它。我想过使用记录器模块,但是我输了addtr()提供的颜色编码。实现这一目标的最佳方法是什么?

例如:

如果我运行以下命令

$ python get_stats.py

它应该显示在stdout上,当我运行命令时

$ python get_stats.py --dump-to-file

它应该转储到文件而不显示在stdout上。 addstr()是否需要额外的参数来确定输出是应该转到文件还是stdout?

1 个答案:

答案 0 :(得分:0)

不,addstr不接受其他参数。默认情况下(使用initscr),curses写入标准输出。你可以简单地做

python get_stats.py >myfile

但是要创建一个程序选项,你必须告诉Python(或curses)写入给定的文件。 Python对ncurses的绑定不包括newterm,这是控制输出流的常用方法。但是在Python中,您可以像这些问题中讨论的那样重定向标准输出:

由于curses在本地保存输出流的副本,因此必须在调用initscr之前执行重定向。另外,请记住,curses可能使用文件描述符而不是缓冲的输出流。