我正在尝试在运行本地cgi服务器时从cgi脚本中启动.py脚本。 cgi脚本只是从Google Earth接收一些数据并将其传递给.py脚本,该脚本当前使用放置在cgi脚本末尾的execfile('script.py')进行调用。
脚本运行完成,但是script.py包含一些我需要能够在进程运行时监视的打印语句。 <.p打印到localhost控制台窗口和print语句的任何错误似乎都是缓冲的。
有没有办法在localhost控制台运行时将.py的输出发送到另一个python控制台窗口?
似乎子进程模块应该做我需要的但是我只能将输出发送到变量或日志文件。这很好,除了我需要实时查看打印语句。
提前致谢
答案 0 :(得分:1)
你说你是从CGI脚本启动一个python脚本,但你没有指定CGI脚本写入的语言。因为CGI只是一个接口,所以不清楚CGI脚本是用什么语言写的。我将假设python,因为这是最有意义的。
最好的办法是将邮件写入日志文件。在“script.py”文件中,您应该打开一个日志文件进行追加,而不是使用print,如下所示:
logfile = file("/var/log/my-app-log.txt", "a")
然后,只要你有这样的打印声明:
print("Starting to do step 2...")
将其更改为logfile.write()语句,如下所示:
logfile.write("starting to do step 2...\n")
请注意,您需要单独添加换行符,因为file.write()不会为您添加换行符。
然后,您可以使用诸如tail之类的命令来查看脚本中发生的事情:
tail -f /var/log/my-app-log.txt
这将显示数据,因为它会附加到您的日志文件中。
答案 1 :(得分:0)
使用popen2或subprocess启动控制台,同时将输出流重定向到该控制台。