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

如何让Python Web应用自动加载日志文件夹中最新的CSV文件?

实现自动加载最新mmWave传感器日志文件填充Web图表

我开发了一个Python Web应用,用于展示心率、呼吸率图表,图表数据来自mmWave RF传感器,生成的日志文件存储在指定的logs文件夹中。目前Web应用采用硬编码文件路径的方式加载示例文件,现需修改为自动加载日志文件夹中最新生成的文件来填充图表。

原代码片段

Web应用读取文件的代码

# Load Data
this_dir = Path(__file__).parent if '__file__' in locals() else Path.cwd()
wb_file_path = this_dir / 'vital_log_2026-03-13_21-20-51.csv'
data = pd.read_csv(wb_file_path)  

日志类生成CSV文件的代码

import pandas as pd
import os
from datetime import datetime

# Create logs folder
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
LOG_FOLDER = os.path.join(BASE_DIR, "logs")
os.makedirs(LOG_FOLDER, exist_ok=True)

file_name = os.path.join(
    LOG_FOLDER,
    f"vital_log_{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.xls"
)

def log_vital_frame(outputDict):

    if "vitals" not in outputDict:
        return

    vitals = outputDict["vitals"]

    timestamp = "'" + datetime.now().strftime("%Y-%m-%d %H:%M:%S")

    df = pd.DataFrame({
        "Timestamp": [timestamp],
        "Frame": [outputDict.get("frameNum")],
        "TrackID": [vitals.get("id")],
        "RangeBin": [vitals.get("rangeBin")],
        "HeartRate_BPM": [vitals.get("heartRate")],
        "BreathRate_BPM": [vitals.get("breathRate")],
        "BreathDeviation": [vitals.get("breathDeviation")]
    })

    if not os.path.isfile(file_name):
        df.to_csv(file_name, index=False)
    else:
        df.to_csv(file_name, mode='a', header=False, index=False)

修改方案

1. 核心逻辑:获取最新日志文件

遍历logs文件夹,筛选符合命名规则的日志文件,按文件修改时间排序后选取最新文件。

2. 修改Web应用读取文件的代码

替换原硬编码路径部分,实现自动获取最新文件:

# Load Data
from pathlib import Path
import os
import pandas as pd

this_dir = Path(__file__).parent if '__file__' in locals() else Path.cwd()
LOG_FOLDER = this_dir / "logs"

# 匹配logs文件夹下所有vital_log开头的日志文件(后缀根据实际情况调整)
log_files = list(LOG_FOLDER.glob("vital_log_*.csv"))
# 如果保留原日志代码的.xls后缀,替换为:log_files = list(LOG_FOLDER.glob("vital_log_*.xls"))

if not log_files:
    raise FileNotFoundError("logs文件夹中未找到日志文件")

# 按文件修改时间排序,取最新文件
latest_log_file = max(log_files, key=os.path.getmtime)

data = pd.read_csv(latest_log_file)

3. 日志生成代码的格式修正

原日志代码中文件名后缀为.xls,但实际用pd.to_csv()保存为CSV格式,会造成格式混淆,建议修改后缀为.csv:

file_name = os.path.join(
    LOG_FOLDER,
    f"vital_log_{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.csv"
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 12:14:51