我在Python中使用ApScheduler包来安排程序每小时运行一次。但是,shell窗口永远不会关闭,如果我手动关闭它,程序将终止。有没有办法我可以安排一个python程序,而不会在代码未运行时看到窗口?此外,在.pyw中,窗口永远不会显示。所以我希望窗口在运行期间打开,然后关闭直到下一次运行。
答案 0 :(得分:2)
如果您想在闲暇时打开或隐藏窗口,则必须使用GUI包,例如TkInter。然后按照how to show or hide a window with TkInter上的本教程。
如果您使用pythonw.exe
运行脚本或将脚本保存为.pyw
,则会隐藏终端窗口。
您只需使用pythonw.exe
打开作业脚本。
命令提示符中的两行用于设置要打开的所有python文件。 Python Documentation - 3.3.4 Executing scripts
- 启动命令提示符。
- 将正确的文件组与.py脚本关联:
assoc .py=Python.File
- 将所有Python文件重定向到新的可执行文件:
醇>ftype Python.File=C:\Path\to\pythonw.exe "%1" %*
如果您需要关闭脚本但窗口被隐藏,您可以使用psutil
模块查找运行脚本的可执行文件,获取PID并将其终止。
import psutil
scripts = [[" ".join(p.cmdline()), p.pid] for p in psutil.process_iter()
if p.name().lower() in ["python.exe", "pythonw.exe"]]