如何让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
相关产品推荐
相关产品推荐

