提问人:Prmake 提问时间:10/18/2022 最后编辑:Prmake 更新时间:10/18/2022 访问量:74
Python - 每小时复制一次实时 Excel 文件 - 无数据刷新
Python - Making copy of live Excel file every hour - no data refreshment
问:
我正在处理一个“实时”Excel 文件,该文件的数据连接每 5 分钟刷新一次(包括时间戳)。 由于每次刷新都会丢失以前的数据,因此我想每小时将数据复制到一个新文件中,以便进行数据分析。
我写了这段代码,它通常有效,因为它通过从实时 Excel 复制数据每小时创建一个新文件:
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 文件都具有相同的数据和时间戳(在我开始运行代码的那一刻)。首先我想,除了刷新数据外,还需要每 x 分钟保存一次实时 excel 文件,但是,不时手动保存文件没有任何区别。
我是否可以对我的 Python 代码进行任何更改,以便每小时在每个副本中获取最新数据,而不仅仅是运行开始时的初始数据?
答:
0赞
Anthony DiGiovanna
10/18/2022
#1
我认为数据没有更改的原因是您的 df 变量在 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') #Moved this line
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)
评论
shutil.copy
来复制文件而不是通过 Pandas?我担心通过 Pandas 会丢弃您将来可能想要的部分文件