首页 python正文

python定时启动、判定程序是否运行及启动程序实现代码

启明SEO python 2020-12-21 17:13:56 198 0 定时启动

最近一直在研究一个脚步,始终没办法完美运行,总会跑着跑着就会出错。最开始一直想着要完善完善,但是说实在的这个东西不是说你每天抱着电脑看,就能真的将其完善到完美(可能是我比较笨吧,又或许是我懒的借口)。时间过得很快,我又想项目早点进入实验阶段,想来想去找到了下面的补救办法。


在我一直研究的那个脚步里一共有两个问题,一个问题是每天晚上12点以后需要提取资料,手动提取,这个很烦,虽然研究出了新解决办法,但是又抛出了新的问题,总之就是不能完美解决。虽然如此,但是好在可以用程序做一次提取。这样我就开始寻找定时功能了,这个百度一下就很容易找到了,下面代码就可以轻松做到。

from apscheduler.schedulers.blocking import BlockingScheduler

from datetime import datetime
# 输出时间
def job():
    print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
# BlockingScheduler
scheduler = BlockingScheduler()
scheduler.add_job(job, 'cron', day_of_week='0-4', hour=16,minute=42)
scheduler.start()

这里需要注意是day_of_week='0-4'这个代表的是周一到周五,这个跟列表索引都是从0开始有关系,刚开始我写的是1-5,结果没反应,还以为是程序错误。

python定时启动、判定程序是否运行及启动程序实现代码


第二个问题就是脚步在跑的时候,总会在第N次的时候抛错。这个问题,我的思考方向就是判定脚步是否在运行,并且判断没有运行的时候,自动启动。要达到这样的效果,在python中也是比较简单,下面代码就可以解决了。

import os
import win32com.client
def proc_exist(process_name):
    is_exist = False
    wmi = win32com.client.GetObject('winmgmts:')
    processCodeCov = wmi.ExecQuery('select * from Win32_Process where name=\"%s\"' %(process_name))
    if len(processCodeCov) > 0:
        is_exist = True
    return is_exist

if proc_exist('kuaipai.exe'):
    print('chrome.exe is running')
else:
    print('no such process...现在来启动')
    os.system(r'G:\1029\kuaipai.exe')

前9行代码,我们可以直接引用,都不用去搞懂其原理,后面的代码我们只需要修改以下几个参数就好了:

kuaipai.exe,这个是你需要判断的程序

r'G:\1029\kuaipai.exe'这个是这个程序的目录,os.system(r'G:\1029\kuaipai.exe')是启动程序。这样看是不是很简单。

有了这两段代码,目前来说在脚步并不完美的情况下,也可以提前运行了。


评论