如何使用pyautogui等待到指定时间后自动执行截屏操作
解决方案
你可以用Python内置的时间处理模块或者第三方定时库实现,以下是两种可行方案:
方案1:仅用标准库实现(无额外依赖)
不需要安装第三方包,适合仅需单次/简单定时的场景:
import time from datetime import datetime import pyautogui # 配置目标执行时间:13点即为下午1点 TARGET_HOUR = 13 TARGET_MIN = 0 TARGET_SEC = 0 while True: current_time = datetime.now() # 匹配到目标时间触发截屏 if (current_time.hour == TARGET_HOUR and current_time.minute == TARGET_MIN and current_time.second == TARGET_SEC): # 替换为你原有可正常运行的截屏代码 screenshot = pyautogui.screenshot() screenshot.save(f"screenshot_{current_time.strftime('%Y%m%d_%H%M%S')}.png") # 仅需执行一次就保留break,需要每日重复执行删除即可 break # 每秒校验一次,降低CPU占用 time.sleep(1)
注意事项:
- 程序运行期间不能关闭终端/进程,否则定时任务会失效,需要后台运行的话Windows可以打包为exe配置系统服务,Linux/Mac可以用
nohup命令挂载进程
方案2:使用schedule库(适合多定时任务场景)
如果后续有扩展定时规则的需求,可以用第三方轻量定时库schedule,代码可读性更高:
- 先安装依赖:
pip install schedule - 实现代码:
import time import schedule import pyautogui from datetime import datetime def run_screenshot(): # 替换为你原有可正常运行的截屏代码 current_time = datetime.now() screenshot = pyautogui.screenshot() screenshot.save(f"screenshot_{current_time.strftime('%Y%m%d_%H%M%S')}.png") # 仅需执行一次就保留退出逻辑,需要每日重复执行删除即可 import os os._exit(0) # 配置每天13:00执行任务 schedule.every().day.at("13:00").do(run_screenshot) while True: schedule.run_pending() time.sleep(1)
注意事项:
schedule支持灵活调整定时规则,比如按周、按小时、按分钟执行都可以直接修改配置,无需自行实现时间判断逻辑
内容的提问来源于stack exchange,提问作者Greysus
相关产品推荐
相关产品推荐

