我在此页面上找到了这一点:
无控制台版本的提示:如果尝试打印任何内容,则会出现一个讨厌的错误窗口,因为stdout和stderr不存在(并且cx_freeze
Win32gui.exe存根将显示错误窗口)。当您希望程序能够在GUI模式和命令行模式下运行时,这很痛苦。要安全地禁用控制台输出,请在程序开头执行以下操作:
try: sys.stdout.write("n") sys.stdout.flush()except IOError: class dummyStream: ''' dummyStream behaves like a stream but does nothing. ''' def __init__(self): pass def write(self,data): pass def read(self,data): pass def flush(self): pass def close(self): pass # and now redirect all default streams to this dummyStream: sys.stdout = dummyStream() sys.stderr = dummyStream() sys.stdin = dummyStream() sys.__stdout__ = dummyStream() sys.__stderr__ = dummyStream() sys.__stdin__ = dummyStream()这样,如果程序在无控制台模式下启动,即使代码包含打印语句,它也将起作用。如果以命令行模式运行,它将照常打印。(这基本上也是我在webGobbler中所做的。)



