如何迭代遍历时间格式命名的文件夹并提取Excel数据存入数组
文件夹遍历与数据提取实现方案
基础单线程实现
适合文件夹数量较少的场景,逻辑简单不易出错,可保证两个数组长度完全一致:
from pathlib import Path import pandas as pd from datetime import datetime # 初始化结果数组 arrayA = [] arrayB = [] # 配置参数 TIME_FORMAT = "%Y_%m_%d_%H-%M-%S-%f" # 时间格式对应文件夹命名规则 EXCEL_FILENAME = "NAMEOFEXCELFILE.xlsx" # 固定Excel文件名 # 遍历当前目录下所有条目 for entry in Path.cwd().iterdir(): # 跳过非文件夹条目 if not entry.is_dir(): continue # 解析文件夹名对应时间,跳过不符合命名规则的文件夹 try: # 如果文件夹后缀是3位毫秒而非6位微秒,把下一行改为 entry.name + "000" 即可兼容 folder_time = datetime.strptime(entry.name, TIME_FORMAT) except ValueError: continue # 拼接目标Excel路径 excel_path = entry / EXCEL_FILENAME # 跳过不存在目标Excel的文件夹 if not excel_path.exists(): continue # 读取Excel数据并存入数组 excel_data = pd.read_excel(excel_path, skiprows=1, header=None, usecols=[5]) arrayA.append(folder_time) arrayB.append(excel_data)
如果需要把时间存储为字符串/时间戳格式,仅需修改arrayA.append的内容为entry.name或folder_time.timestamp()即可。
高效率优化方案
文件夹数量较多时,Excel IO操作是主要性能瓶颈,推荐用多进程并行读取提速,效率可提升数倍:
from pathlib import Path import pandas as pd from datetime import datetime from concurrent.futures import ProcessPoolExecutor # 配置参数 TIME_FORMAT = "%Y_%m_%d_%H-%M-%S-%f" EXCEL_FILENAME = "NAMEOFEXCELFILE.xlsx" def process_single_folder(entry): if not entry.is_dir(): return None try: folder_time = datetime.strptime(entry.name, TIME_FORMAT) except ValueError: return None excel_path = entry / EXCEL_FILENAME if not excel_path.exists(): return None excel_data = pd.read_excel(excel_path, skiprows=1, header=None, usecols=[5]) return (folder_time, excel_data) if __name__ == "__main__": arrayA = [] arrayB = [] all_entries = list(Path.cwd().iterdir()) # max_workers可按CPU核心数调整,常规设为CPU核心数*2即可 with ProcessPoolExecutor(max_workers=8) as executor: results = executor.map(process_single_folder, all_entries) # 过滤无效结果,组装最终数组 for res in results: if res is not None: arrayA.append(res[0]) arrayB.append(res[1])
额外优化点:
- 你当前已经使用
usecols限定读取列,已经大幅降低了Excel读取开销,若不需要DataFrame格式可追加.values直接存储numpy数组,降低内存占用 - 若确认所有文件夹都符合命名规则且存在目标Excel,可去掉异常判断和存在性校验,进一步提升运行速度
内容的提问来源于stack exchange,提问作者7Programmer
相关产品推荐
相关产品推荐

