摘自http://hi.baidu.com/fcl06/item/1c95c357d08b449409be1781
python程序缺省情况下运行会出现一个控制台窗口,在windows环境下显得很另类,我做的几个程序都一直有这个小尾巴,很讨厌.
我分析了一下有三种情况会产生控制台窗口
1.程序以py为扩展名
2.有print进行标准控制台I/O
3.通过os.system调用了dos命令
以上情况分别可以解决如下:
1.将程序改名为pyw,打包的时候在py2exe0.5.0版本以后统一用scripts命令,不在使用consoles和windows命令
2.进行I/O重定向,程序如下:
DEBUG=0
class Redirect:
def __init__(self, stdout):
self.stdout = stdout
def write(self, s):
self.stdout.write(string.lower(s))
if DEBUG:
old_stdout = sys.stdout
else:
sys.stdout = Redirect(open(".\\r.txt","w"))
sys.stderr = Redirect(open(".\\re.txt","w"))
定义一个DEBUG如果=1则使用标准控制台I/O,则会出现控制台窗口,程序写完后改为0则将输出设备和错误输出到两个文本文件中.
4.将os.system调用改为os.popen,例如:os.popen(′dir′).read()
经过以上步骤后,可以彻底去掉各种控制台窗口,程序更象windows标准的应用程序一样