Python自动运行程序,没有shell保持打开

时间:2018-06-05 09:52:52

标签: python python-3.x shell apscheduler

我在Python中使用ApScheduler包来安排程序每小时运行一次。但是,shell窗口永远不会关闭,如果我手动关闭它,程序将终止。有没有办法我可以安排一个python程序,而不会在代码未运行时看到窗口?此外,在.pyw中,窗口永远不会显示。所以我希望窗口在运行期间打开,然后关闭直到下一次运行。

1 个答案:

答案 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

  
      
  1. 启动命令提示符。
  2.   
  3. 将正确的文件组与.py脚本关联:   assoc .py=Python.File
  4.   
  5. 将所有Python文件重定向到新的可执行文件:   ftype Python.File=C:\Path\to\pythonw.exe "%1" %*
  6.   

如果您需要关闭脚本但窗口被隐藏,您可以使用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"]]