在用Windows系统搭建好的Python目录中,会发现Python.exe和Pythonw.exe两个程序,它们的差别是什么呢?
简单概括:
python.exe以控制台方式启动,在运行程序的时候,会弹出一个黑色的命令行控制行窗口(也叫DOS/CMD窗口)
pythonw.exe以标准WIN32 GUI方式启动,双击图标不会出现命令控制行窗口,是无窗口的Python可执行程序,代码在后台执行。
使用Pythonw.exe来执行py程序,则需要注意一个问题:如果在py程序中使用了print语句,当print语句填满stdout的输出缓冲后,pythonw.exe会抛出以下异常:
IOError: [Errno 9] Bad file descriptor
然后pythonw.exe则会悄悄地退出而不报告任何错误,如果是线程中使用了print,则会导致该线程悄悄地退出。这个问题有以下再个解决方案:
1. 刷新控制台缓冲
2. 将stdout重定向输出到文件或者空设备
根据python.exe和pythonw.exe也可以看出来.py文件和.pyw文件的差别:
扩展名为 .py 的文件被默认为用 python.exe 运行的文件,而 .pyw文件则被默认为用 pythonw.exe 运行。
python.exe和pythonw.exe的区别(区分.py、.pyw、.pyc文件)
原文:https://www.cnblogs.com/weijia-home/p/14994473.html