如何用Python从多文件夹txt提取指定数据并整理为Excel/CSV
解决方案
核心思路
不需要先转CSV,直接读取txt文件解析X-Y数据更高效。通过遍历双文件夹结构,按时间点匹配数据,最后用Pandas整理成目标格式输出。
实现代码
import os import pandas as pd # 父文件夹路径,根据实际情况修改 parent_dir = "02202023" # 子文件夹名称 groups = ["Control", "Experimental"] # 时间点列表,对应txt文件名 time_points = ["0second", "30second", "60second", "90second"] # 初始化数据存储字典 result_data = { "Time": time_points, "Control": [], "Experimental": [] } # 遍历每个实验组 for group in groups: # 遍历每个时间点的文件 for time_point in time_points: file_path = os.path.join(parent_dir, group, f"{time_point}.txt") y_value = None # 读取txt文件,查找X=400的行 with open(file_path, "r") as f: for line in f: # 假设X和Y用空格/制表符分隔,根据实际分隔符调整 parts = line.strip().split() if len(parts) != 2: continue x_val, y_val = parts # 注意X值可能是字符串格式的数字,转成整数/浮点数判断 try: if float(x_val) == 400: y_value = float(y_val) break except ValueError: # 跳过非数字的行 continue # 将Y值存入对应列表 result_data[group].append(y_value if y_value is not None else "N/A") # 转换成DataFrame df = pd.DataFrame(result_data) # 保存为CSV(也可以用to_excel,需要安装openpyxl库) df.to_csv("result.csv", index=False) # 如果需要Excel格式,取消下面注释 # df.to_excel("result.xlsx", index=False, engine="openpyxl")
关键说明
- 文件路径处理:用
os.path.join拼接路径,避免跨系统路径问题 - 数据解析:逐行读取txt,跳过无效行,通过类型转换判断X是否等于400,兼容整数/浮点数格式的X值
- 异常处理:处理非数字行的情况,避免程序崩溃;如果找不到X=400的行,填充"N/A"标记
- 输出选择:默认输出CSV(无需额外依赖),如果需要Excel,需先安装
openpyxl库(pip install openpyxl)
适配双文件夹的逻辑
通过外层循环遍历Control和Experimental两个子文件夹,内层循环遍历时间点文件,确保每个时间点的两组数据对应存入结果字典,最终通过Pandas自动对齐列数据。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

