每小时导出DataFrame至新Excel文件(时间戳命名)问题排查
问题分析与解决
核心问题
你的代码里dt_string是在程序启动时就生成好的固定值,每次调用export()函数都会重复使用这个初始时间戳,自然会覆盖同一个文件,而且文件名也不会对应导出时刻的时间。
修正后的代码
import pandas as pd from datetime import datetime as dt import schedule import time def export(): # 每次导出时才获取当前时间生成时间戳 now = dt.now() dt_string = now.strftime("%Y%m%d_%H%M%S") # 用下划线替代空格,避免路径识别问题 # 每次导出前重新读取原文件,确保使用最新数据 df = pd.read_excel("file path", sheet_name='data') df.to_excel(f"file path/{dt_string}.xlsx", sheet_name='data') # 用f-string拼接路径更清晰 schedule.every(3600).seconds.do(export) while True: schedule.run_pending() time.sleep(1)
关键改动说明
- 将时间戳生成逻辑移到
export()函数内部,每次执行导出操作时才获取当前时间,保证文件名对应导出时刻的时间戳。 - 把时间戳里的空格替换为下划线
_,避免因路径包含空格导致的文件读写异常。 - 把读取Excel文件的操作移到函数内部,确保每次导出的都是原文件的最新数据(若原文件有更新),避免一直使用程序启动时读取的旧数据。
- 采用f-string拼接路径与文件名,提升代码可读性。
内容的提问来源于stack exchange,提问作者Prmake
相关产品推荐
相关产品推荐

