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
相关产品推荐
相关产品推荐

