我试图将curses窗口的输出转储到文件中而不在stdout上显示它。目前我使用addstr()函数在stdout上打印,最后我调用instr()函数将整个屏幕转储到一个文件中。在某些情况下,ncurses在xterm上无法正常工作,因此我需要将输出重定向到文件而不在stdout上实际打印它。我想过使用记录器模块,但是我输了addtr()提供的颜色编码。实现这一目标的最佳方法是什么?
例如:
如果我运行以下命令
$ python get_stats.py
它应该显示在stdout上,当我运行命令时
$ python get_stats.py --dump-to-file
它应该转储到文件而不显示在stdout上。 addstr()是否需要额外的参数来确定输出是应该转到文件还是stdout?
答案 0 :(得分:0)
不,addstr
不接受其他参数。默认情况下(使用initscr
),curses写入标准输出。你可以简单地做
python get_stats.py >myfile
但是要创建一个程序选项,你必须告诉Python(或curses)写入给定的文件。 Python对ncurses的绑定不包括newterm
,这是控制输出流的常用方法。但是在Python中,您可以像这些问题中讨论的那样重定向标准输出:
由于curses在本地保存输出流的副本,因此必须在调用initscr
之前执行重定向。另外,请记住,curses可能使用文件描述符而不是缓冲的输出流。