0

我正在尝试在运行本地 cgi 服务器时从 cgi 脚本中启动 .py 脚本。cgi 脚本只是从 Google Earth 接收一些数据并将其传递给当前正在使用 execfile('script.py') 调用的 .py 脚本,该 execfile('script.py') 位于 cgi 脚本的末尾。

脚本运行完成,但是 script.py 包含一些打印语句,我需要在进程运行时对其进行监控。.py 中的任何错误都会打印到 localhost 控制台窗口,并且打印语句似乎已被缓冲。

有没有办法在 localhost 控制台运行时将输出从 .py 发送到另一个 python 控制台窗口?

似乎 subprocess 模块应该做我需要的,但我只能将输出发送到变量或日志文件。这很好,只是我需要实时查看打印语句。

提前致谢

4

2 回答 2

1

你说你从 CGI 脚本启动一个 python 脚本,但你没有指定 CGI 脚本是用什么语言编写的。因为 CGI 只是一个接口,所以不清楚 CGI 脚本是用什么语言编写的。我我将假设 python,因为这是最有意义的。

最好的方法是将您的消息写入日志文件。在您的“script.py”文件中,您应该打开一个日志文件以进行附加,而不是使用打印,如下所示:

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

这将显示附加到您的日志文件的数据。

于 2009-04-03T21:36:57.230 回答
0

使用popen2subprocess启动控制台,同时将输出流重定向到该控制台。

于 2009-04-03T21:41:12.617 回答