You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python datetime实现每日22:00定时脚本遇布尔值失效问题

问题根源

你当前的codeRan变量是脚本内的临时变量,每次脚本启动时都会被重新赋值为False——不管之前有没有执行过,只要脚本重启,这个变量就会重置,自然没法实现“每日只执行一次”的效果。

解决方案

下面给两种实用的实现方式:

方法1:用文件记录执行状态(推荐,适合配合系统任务计划)

通过一个本地文件记录上次执行的日期,每次脚本运行时对比当前日期,判断是否已经执行过。就算脚本被多次启动,也能准确控制每日只执行一次。

import datetime

today = datetime.date.today()
# 用来记录上次执行日期的文件
status_file = "last_run.txt"

# 读取上次执行的日期
last_run_date = None
try:
    with open(status_file, "r") as f:
        last_run_date = datetime.date.fromisoformat(f.read().strip())
except FileNotFoundError:
    # 文件不存在说明从未执行过
    pass

time_now = datetime.datetime.now()
time_hour = time_now.strftime("%H")
time_full = time_now.strftime("%X")
time_ampm = time_now.strftime("%p")

if time_hour == "22":
    if last_run_date != today:
        print(f"{time_hour} That is correct!")
        # 更新记录的日期
        with open(status_file, "w") as f:
            f.write(today.isoformat())
    else:
        print("Script already ran. Wait 24 hours")
else:
    print(f"Not time yet, it's only {time_full}. The script will run at 22:00{time_ampm}")

你可以把这个脚本加到系统的任务计划里(比如Windows的任务计划程序、Linux的cron),设置为每小时或者每半小时启动一次,到22点时自动执行,且当天只执行一次。

方法2:让脚本持续运行,循环检查时间

如果不想依赖系统任务计划,可以让脚本一直后台运行,循环检查当前时间,用内存变量记录当日是否执行过。注意要加睡眠间隔,避免占用过多CPU资源。

import datetime
import time

code_ran_today = False
today = datetime.date.today()

while True:
    time_now = datetime.datetime.now()
    time_hour = time_now.strftime("%H")
    time_full = time_now.strftime("%X")
    time_ampm = time_now.strftime("%p")

    # 跨天时重置执行状态
    if datetime.date.today() != today:
        code_ran_today = False
        today = datetime.date.today()

    if time_hour == "22" and not code_ran_today:
        print(f"{time_hour} That is correct!")
        code_ran_today = True
    elif time_hour != "22":
        print(f"Not time yet, it's only {time_full}. The script will run at 22:00{time_ampm}")
    else:
        print("Script already ran. Wait 24 hours")
    
    # 每分钟检查一次,可根据需求调整间隔
    time.sleep(60)

这种方式需要脚本一直运行,若脚本意外崩溃,当天可能不会执行,适合稳定性要求不高的场景。

内容的提问来源于stack exchange,提问作者Spykerwolf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 00:20:32