尝试使用“时间表”模块自动打开程序是否可行? 我正在尝试自动登录到我的会议

问题描述

import schedule 
import os

def start_file():
    os.startfile("C:\python\Zoom.lnk")


schedule.every().day.at("09:00").do(start_file())

它只是打开我的缩放应用程序而没有在正确的时间显示它,并且给我错误

 "File "C:\Users\Hate348\PycharmProjects\pythonProject\venv\lib\site-packages\schedule\__init__.py",line 440,in do
    self.job_func = functools.partial(job_func,*args,**kwargs)
TypeError: the first argument must be callable"

解决方法

首先,start_file()start_file调用中应为do()

import schedule
import os

def start_file():
    os.startfile(r"C:\python\Zoom.lnk")

schedule.every().day.at("09:00").do(start_file)

否则,您仅调用一次start_file(),并且要求时间表库每天调用该调用的结果值None,每天9点。调用None不会没有道理,因此是例外。

第二,必须有一个循环才能使计划的作业真正发生:

import time

...

while True:
    schedule.run_pending()
    time.sleep(1)

否则,脚本将停止并且不执行任何操作。这是一个非常简单的库,没有任何外部依赖性。它不使用操作系统的任务调度程序或类似的程序,因此脚本必须一直运行以使其正常工作。

所以,总共:

import os
import schedule
import time

def start_file():
    os.startfile(r"C:\python\Zoom.lnk")

schedule.every().day.at("09:00").do(start_file)

while True:
    schedule.run_pending()
    time.sleep(1)

如果您不需要任务从9:00:00开始,而是在9:00左右开始,还可以将睡眠时间延长一分钟并节省一点CPU:

while True:
    schedule.run_pending()
    time.sleep(60)

此外,我在r字符串之前添加了"C:\python\Zoom.lnk"。不是因为它在此特定示例中不起作用(确实如此),但通常,如果没有r\将是字符串中的转义字符,而{{1之后将是其他字符}},例如\,您会得到不想要的结果。使用n时,r字符是按字面意义使用的,而不是转义字符。这就是您想要的文件名中的反斜杠,尤其是在Windows上。