在用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 運行。