我能在pythonw中获取"print"语句的输出吗?
pythonw.exe没有控制台,所以我看不到print的输出。但是我的程序在python.exe里运行正常,在pythonw.exe里却失败了。我只是想看到python解释器的日志和我用“print”语句打印的日志,这能做到吗?
4 个回答
1
你可以把打印出来的内容输出到任何地方。比如说:
logfile = open("logfile.txt", "w")
print >>logfile, "This is a log test"
不过大多数情况下,使用Python自带的日志功能会更合适,这个功能在logging
模块里。
2
你可以把输出重定向到任何一个有 .write 方法的类。比如,我把 sys.stdout 和 sys.stderr 都重定向到一个类,这个类会把结果写到一个富文本框里,正常的输出是黑色的,错误信息是红色的。
logControl = None
def LogWrite(text, color):
logControl.SetDefaultStyle(wx.TextAttr(color, wx.NullColour))
logControl.WriteText(text)
class RedirectStdOut:
def write(self,string):
LogWrite(string, "BLACK")
class RedirectStdErr:
def write(self,string):
LogWrite(string, "RED")
....
sys.stdout = RedirectStdOut()
sys.stderr = RedirectStdErr()
在这个例子中,logControl 只是一个指向富文本框的引用,我可以假设这个文本框是存在的。你可以同时写入这个控件和一个文件,或者重定向到 dbgview,基本上你想怎么做都可以。
7
你可以通过给 sys.stdout 赋值来全局重定向输出内容:
import sys
sys.stdout = open("mylog.txt", "w")
这样你程序中所有的输出,包括打印语句,都会被写入到 mylog.txt 文件里。