如何让24/7运行的Python脚本自动读取Excel修改后的CSV
实现Python脚本自动检测并读取CSV最新版本
核心思路
通过定时检查CSV文件的最后修改时间判断文件是否更新,当检测到修改时间变化时,重新读取文件内容,无需重启脚本。
完整代码实现
import pandas as pd import os import time def get_file_modified_time(file_path): """获取文件最后修改时间(秒级时间戳)""" return os.path.getmtime(file_path) # 配置参数 CSV_FILE_PATH = "data.csv" CHECK_INTERVAL = 60 # 检查间隔(秒) # 初始化:读取初始数据并记录修改时间 try: last_modified = get_file_modified_time(CSV_FILE_PATH) csv_data = pd.read_csv(CSV_FILE_PATH, encoding="utf-8") print(f"初始数据读取完成,共{len(csv_data)}行") except FileNotFoundError: print(f"错误:未找到文件 {CSV_FILE_PATH}") exit(1) except Exception as e: print(f"初始读取失败:{str(e)}") exit(1) # 循环检测更新 while True: time.sleep(CHECK_INTERVAL) try: current_modified = get_file_modified_time(CSV_FILE_PATH) if current_modified != last_modified: # 文件已更新,重新读取 csv_data = pd.read_csv(CSV_FILE_PATH, encoding="utf-8") last_modified = current_modified print(f"文件已更新,当前数据共{len(csv_data)}行") # 在此添加你需要对最新数据执行的业务逻辑 # 例如:处理新增行、分析数据等 # else: 文件未变更,无需操作 except PermissionError: print("警告:文件被锁定(可能正在被Excel编辑),跳过本次检查") except FileNotFoundError: print(f"警告:文件 {CSV_FILE_PATH} 暂时不存在") except Exception as e: print(f"读取文件出错:{str(e)}")
关键细节说明
- 文件修改时间检测:使用
os.path.getmtime()获取文件最后修改时间戳,Excel保存后会更新这个时间,以此判断文件是否变更。 - 异常处理:针对Excel保存时的文件锁定(
PermissionError)、文件临时缺失等情况做了捕获,避免脚本崩溃。 - 定时逻辑:通过
time.sleep(60)实现每分钟检查一次,间隔可根据需求调整。
额外建议
- 若需要脚本后台持续运行:
- Linux/macOS:使用
nohup python your_script.py &命令,让脚本在后台执行。 - Windows:将脚本注册为Windows服务,或使用任务计划程序设置开机启动。
- Linux/macOS:使用
- 若对数据更新的实时性要求更高,可缩短检查间隔,但建议不低于10秒,避免频繁IO操作占用资源。
内容的提问来源于stack exchange,提问作者FormulatorX
相关产品推荐
相关产品推荐

