如何选取CSV/文本文件最后一行并批量导入至Excel
问题核心需求
- 批量读取指定目录下的文本/CSV类结构化文件
- 仅提取每个文件的最后一行有效数据
- 把所有提取到的数据合并后导出为名为Total.xlsx的Excel文件
原代码存在的问题
- 存在无意义的嵌套for循环,内层循环和外层循环用了同一个迭代变量名,逻辑完全混乱
- 切片语句
txt_list[-7::3]既没有赋值给变量,也没有做任何数据处理,属于无效代码,完全不会产生实际作用 - 读取文件时直接加载了整个文件的全部内容,没有做最后一行的筛选,最终导出的是所有文件的全量数据,不符合需求
- 代码末尾多了多余的
]符号,运行时会直接触发语法错误
可直接运行的正确实现代码
import glob import pandas as pd import os path = input("Insert location:").strip() # 如果需要同时匹配txt和csv文件,可替换为下面这行的匹配规则 # file_list = glob.glob(os.path.join(path, "*.txt")) + glob.glob(os.path.join(path, "*.csv")) file_list = glob.glob(os.path.join(path, "*.txt")) txt_list = [] for file in file_list: # 跳过空文件避免报错 if os.path.getsize(file) == 0: continue # 读取当前文件后仅保留最后1行 last_row = pd.read_csv(file).tail(1) txt_list.append(last_row) # 合并所有提取到的最后一行数据 if txt_list: excl_merged = pd.concat(txt_list, ignore_index=True) excl_merged.to_excel('Total.xlsx', index=False) print(f"处理完成,共提取{len(txt_list)}个文件的最后一行,已导出为Total.xlsx") else: print("指定路径下未找到可处理的有效文件")
补充说明
- 如果处理的是体积特别大的文件,不想加载全量内容浪费内存,可以把读取最后一行的逻辑替换为逐行读文件取最后一行的写法,小文件场景下用pandas自带的
tail(1)写法更简洁稳定 - 代码里加了空文件判断、有效文件数量判断,避免边缘场景下程序直接崩溃
- 用
os.path.join拼接路径比直接字符串拼接兼容性更好,不会出现Windows和Mac/Linux路径斜杠不匹配的问题
内容的提问来源于stack exchange,提问作者Armin
相关产品推荐
相关产品推荐

