为了账号安全,请及时绑定邮箱和手机立即绑定

尝试使用“计划”模块自动打开程序这可能吗?(我正在尝试自动登录我的会议

尝试使用“计划”模块自动打开程序这可能吗?(我正在尝试自动登录我的会议

PHP
哆啦的时光机 2023-11-09 17:05:46
import schedule import osdef 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"
查看完整描述

1 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

首先,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, 则将\成为字符串中的转义字符,而在 之后使用其他字符\(例如 )n,您将得到不需要的结果。对于r,\字符按字面意思处理,绝不作为转义字符。这就是您想要的文件名中的反斜杠,尤其是在 Windows 上。


查看完整回答
反对 回复 2023-11-09
  • 1 回答
  • 0 关注
  • 60 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信