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

Python定时每小时复制实时Excel文件:数据未更新问题求助

问题描述

我正在使用一份实时Excel文件,其数据连接每5分钟刷新一次(包含时间戳),每次刷新会覆盖原有数据。为便于数据分析,我需要每小时将数据复制到新文件中。我编写了如下代码,该代码可每小时生成新文件,但所有新文件均仅包含代码启动时的初始数据及时间戳,手动保存Excel文件也无济于事。请问如何修改Python代码,使每小时生成的文件包含最新数据?

代码如下:

import pandas as pd
from datetime import datetime as dt
import schedule
import time

df = pd.read_excel("import.xlsx", sheet_name='Raw Data')
def export():
    now =dt.now()
    dt_string = now.strftime("%Y%m%d %H%M%S")
    df.to_excel("export" + dt_string + ".xlsx", sheet_name='Raw Data')

schedule.every(3600).seconds.do(export)

while 1:
    schedule.run_pending()
    time.sleep(1)
解决方案

问题核心是你只在代码启动时读取了一次Excel数据,后续执行导出操作时始终用的是初始加载的旧数据。要获取最新数据,只需把读取Excel的操作移到export函数内部,让每次导出前都重新读取文件:

修改后的代码:

import pandas as pd
from datetime import datetime as dt
import schedule
import time

def export():
    # 每次导出前重新读取最新数据
    df = pd.read_excel("import.xlsx", sheet_name='Raw Data')
    now = dt.now()
    dt_string = now.strftime("%Y%m%d_%H%M%S")
    df.to_excel(f"export{dt_string}.xlsx", sheet_name='Raw Data')

schedule.every(3600).seconds.do(export)

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

额外注意事项:

  • 如果Excel文件在刷新时处于打开状态,可能会触发读取报错,建议确保文件刷新完成后处于可读取状态,或尝试添加engine='openpyxl', read_only=True参数优化读取兼容性。
  • 把时间格式里的空格替换为下划线,避免文件名带空格引发的潜在问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:25:37