Python如何从多个TFS文件提取指定行列生成新文件
多TFS文件指定行列提取实现方案
需求描述
现有多个TFS文件,需读取全部文件后,从每个文件中提取指定行与指定列的内容,整合生成新文件。
输入输出样例
单文件内容样例(共3个同结构文件):
x 1 # A y 2 % B z 3 * C最终期望输出:
y 2 B y1 5 B y2 8 B
提取规则
- 提取每个文件中索引为1的行(Python计数从0开始,对应文件的第二行)
- 从提取到的行中,取索引为0、1、3的列内容
- 所有文件提取完成后,将结果汇总写入新文件
操作步骤
- 先将所有需要处理的TFS文件放到同一个独立文件夹中,避免混入其他无关文件
- 复制下方代码到本地
.py文件中,修改开头的路径配置为你本地的实际路径 - 运行代码即可在指定输出路径拿到生成的结果文件
完整代码
import os # ========== 配置项:根据自己的实际路径修改 ========== TFS_DIR = "./tfs_files" # 存放所有待处理TFS文件的文件夹路径 OUTPUT_PATH = "./result.txt" # 最终结果文件的保存路径 TARGET_ROW = 1 # 需要提取的行索引 TARGET_COLS = [0, 1, 3] # 需要提取的列索引列表 # ================================================== result_lines = [] # 遍历文件夹下的所有条目 for filename in os.listdir(TFS_DIR): file_path = os.path.join(TFS_DIR, filename) # 跳过子文件夹,只处理普通文件 if not os.path.isfile(file_path): continue # 逐行读取文件内容,过滤空行 with open(file_path, "r", encoding="utf-8") as f: file_lines = [line.strip() for line in f if line.strip()] # 校验文件行数是否足够 if len(file_lines) <= TARGET_ROW: print(f"[警告] 文件 {filename} 行数不足,已跳过") continue # 拆分目标行为列(按任意空白字符分割,适配空格、制表符分隔的格式) row_content = file_lines[TARGET_ROW].split() # 校验列数是否足够 extracted = [] valid = True for col_idx in TARGET_COLS: if len(row_content) <= col_idx: print(f"[警告] 文件 {filename} 目标行列数不足,已跳过") valid = False break extracted.append(row_content[col_idx]) if valid: result_lines.append(" ".join(extracted)) # 写入结果文件 with open(OUTPUT_PATH, "w", encoding="utf-8") as f: f.write("\n".join(result_lines)) print(f"处理完成,结果已保存至:{OUTPUT_PATH}")
补充说明
- 代码默认按UTF-8编码读取文件,如果你的TFS文件是其他编码,修改
open函数里的encoding参数即可 - 遇到格式不符合要求、行列数不足的文件,代码会打印警告信息后自动跳过,不会中断运行
- 如果后续需要调整提取的行、列位置,直接修改开头配置项里的数值即可,不用改动核心逻辑
内容的提问来源于stack exchange,提问作者zvezdy
相关产品推荐
相关产品推荐

