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

如何让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服务,或使用任务计划程序设置开机启动。
  • 若对数据更新的实时性要求更高,可缩短检查间隔,但建议不低于10秒,避免频繁IO操作占用资源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:10:27