Python批量处理TXT:删首行、行列转置、按文件名排序合并
原有代码的问题
你写的测试代码缺核心逻辑,根本跑不通:
- Python原生
open()不支持*.txt通配符,没法直接批量读多个文件 - 只写了跳第一行的逻辑,完全没做行列转置、文件名排序、多文件横向拼接的要求
- 没处理文件里浮点数之间多空格分隔的格式兼容问题
可用实现
把下面代码放到你存这些txt文件的文件夹里直接运行,就能生成符合预期的output.txt:
import os import re # 筛选当前目录下所有符合「数字开头_xxx.txt」规则的文件 target_files = [f for f in os.listdir('.') if os.path.isfile(f) and f.endswith('.txt') and re.match(r'^\d+_', f)] # 按文件名开头的数字做升序排序,转成int比较避免字符串排序出错 sorted_files = sorted(target_files, key=lambda x: int(x.split('_')[0])) processed_data = [] for file in sorted_files: num_list = [] with open(file, 'r', encoding='utf-8') as f: next(f) # 跳过第一行表头,对应step1要求 for line in f: line = line.strip() if not line: continue # 按空白字符分割,兼容多空格/制表符分隔的浮点数 num_list.extend(line.split()) # 每个文件的所有浮点数拉成单列,对应step2行列转换要求 processed_data.append(num_list) # 按排序后的顺序横向拼接所有文件内容,写入输出文件,对应step3要求 with open('output.txt', 'w', encoding='utf-8') as f_out: for row_items in zip(*processed_data): # 列之间用制表符分隔,和示例输出格式对齐 f_out.write('\t'.join(row_items) + '\n')
逻辑说明
- 删第一行:读每个文件时直接跳过第一行,不纳入后续处理
- 行列转换:把每个文件里所有行的浮点数按顺序拼成一个长列表,相当于把原来的多行多列数据转成单列
- 排序拼接:提取文件名开头的数字转成整数排序,避免字符串排序把
2排在10后面的问题,最后把所有文件的单列数据逐行对齐拼接,得到最终的横向合并结果。
内容的提问来源于stack exchange,提问作者viraj moil
相关产品推荐
相关产品推荐

