问题
之前一直用 os.system
来跑CMD命令,在没有图形化界面时有CMD命令窗口还能接受。
然而现在用 PyQt5 编写的程序通过 pyinstaller
打包成EXE后,运行时执行命令则会跳出烦人的cmd黑窗口来,每执行一条命令就会弹出一个窗口来,感觉有些尴尬。
处理方法
网上搜罗一阵,发现也可以使用subprecess模块来执行 cmd命令,并且打包成exe程序后完全达到预期效果。
1. 更换模块
- 原先使用 os 模块
import os
os.system("CMD命令")
- 改用 subprocess 模块
import subprocess
cmd = 'CMD命令'
subprocess.call(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
2. Pyinstaller 增加 -w 参数
然而仅仅替换subprecess模块还不够,图形化的Python程序通过 Pyinstaller 打包成exe程序后,执行时还会先弹一个黑色命令窗口来,这个就有些尴尬了。
其实我们使用Pyinstaller 打包时可以增加 -w
参数来取消cmd弹窗
pyinstaller -F -w filename.py