我在shell上打印时尝试捕获stdout。我得到这样的输出:
************* STARTING healthmonitor ***********************
Aug 28, 2014 5:17:58 AM org.rzo.yajsw.os.posix.PosixService getPid
INFO: wrapper pid file: /var/run/wrapper.healthmonitor.pid
Aug 28, 2014 5:17:58 AM org.rzo.yajsw.os.posix.PosixService startProcess
INFO: calling "/usr/bin/java" "-Dwrapper.pidfile=/va/run/wrapper.healthmonitor.pid"
Aug 28, 2014 5:17:58 AM org.rzo.yajsw.os.posix.PosixService getPid
INFO: wrapper pid file: /var/run/wrapper.healthmonitor.pid
Aug 28, 2014 5:18:00 AM org.rzo.yajsw.os.posix.PosixService getPid
INFO: wrapper pid file: /var/run/wrapper.healthmonitor.pid
然而,当我使用相同的输出在网页上打印时,格式会像这样混乱:
********* 启动健康监护人 ******************* 8月28日, 2014年4:48:23 org.rzo.yajsw.os.posix.PosixService getPid INFO:包装器pid文件:/var/run/wrapper.healthmonitor.pid 2014年8月28日上午4:48:23 org.rzo.yajsw .os.posix.PosixService startProcess INFO:calling" / usr / bin / java" " -Dwrapper.pidfile =的/ var /运行/ wrapper.healthmonitor.pid" " -Dwrapper.service =真" " -Dwrapper.visible =假" " -Djna_tmpdir = /应用/英镑/ JSW / healthmonitor / bin中/../ TMP" "罐子" " /app/sterling/jsw/healthmonitor/wrapper.jar" " -c" " /app/sterling/jsw/healthmonitor/conf/wrapper.conf" 2014年8月28日上午4:48:23 org.rzo.yajsw.os.posix.PosixService getPid INFO:
使用cgi python调用方法在java脚本文件中调用打印它的python脚本。而在python脚本中,这就是它的印刷方式。
import cgi, cgitb
print("Content-type: text/html\n\n")
print """
<html><head></head>
<body>
<br>
"""
print nova.servers.get_console_output(VMID)
print """
</body></html>
"""
&#34; print nova.servers.get_console_output(VMID)&#34;是产生控制台输出的那个。
感谢您提供的任何帮助。
答案 0 :(得分:1)
换行符(\n
)在呈现为HTML时不会转换为新行。您可以使用<pre>
标记(预格式化)以允许它们在渲染时具有意义。
...
print """
<html><head></head>
<body>
<br>
<pre>
"""
print nova.servers.get_console_output(VMID)
print """
</pre>
</body></html>
"""
或者您可以使用<br>
替换换行符,如下所示:
print nova.servers.get_console_output(VMID).replace("\n", "<br>")
任何一方都应该做你想做的事。