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

如何持久化变量供下次读取并对比运行日期更新批次ID

解决方案:持久化运行日期与日期对比逻辑

一、持久化变量(保存上次运行日期)

最简单的方式是用文件存储状态,推荐两种实用方案:

方案1:纯文本文件(适合单变量存储)

用文本文件直接存储日期的ISO格式字符串(如2024-05-20),脚本启动时读取历史日期,运行结束后更新:

from datetime import date

# 自定义存储文件路径,可按需修改
LAST_RUN_FILE = "last_run_date.txt"

curr_date = date.today()

# 读取上次运行日期,处理首次运行场景
try:
    with open(LAST_RUN_FILE, "r") as f:
        run_date_str = f.read().strip()
        run_date = date.fromisoformat(run_date_str)
except FileNotFoundError:
    # 首次运行时,默认将run_date设为当日
    run_date = curr_date

方案2:JSON文件(适合多变量存储,比如同时保存batch_id)

如果需要同时维护batch_id这类状态,用JSON文件存储更规整:

import json
from datetime import date

STATE_FILE = "script_state.json"

curr_date = date.today()

# 读取历史状态
try:
    with open(STATE_FILE, "r") as f:
        state_data = json.load(f)
        run_date = date.fromisoformat(state_data["run_date"])
        batch_id = state_data["batch_id"]
except (FileNotFoundError, KeyError):
    # 首次运行初始化状态
    run_date = curr_date
    batch_id = 0

二、日期对比与batch_id更新

datetime.date对象支持直接用比较运算符(>/</==)对比,底层按年、月、日的顺序判断大小,完全匹配你的需求:

# 执行日期对比逻辑
if curr_date > run_date:
    batch_id += 1

三、运行结束后更新状态

无论用哪种存储方案,脚本运行完成后都要把当前日期(和更新后的batch_id)写回文件:

纯文本文件更新:

with open(LAST_RUN_FILE, "w") as f:
    f.write(curr_date.isoformat())

JSON文件更新:

# 组装最新状态
new_state = {
    "run_date": curr_date.isoformat(),
    "batch_id": batch_id
}

with open(STATE_FILE, "w") as f:
    json.dump(new_state, f)

关键说明

  • 无需使用wait方法,脚本通过定时任务每日执行,每次启动时直接读取历史状态即可完成判断。
  • 首次运行时,run_date与curr_date一致,不会触发batch_id递增;后续每日运行时,curr_date会大于run_date(定时任务每日执行,run_date为前一天日期),自动实现batch_id递增逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:45:40