You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找解析文本文件特定开头行 修复Python读取ANSYS网格维度代码

问题分析

原代码存在以下明显错误:

  • 仅在进入循环前读取了一次文件行,循环内没有更新row变量,始终在判断第一行内容
  • 提前读取第一行的第8位作为维度值,未匹配到目标行就取值,结果必然错误
  • 只有匹配到目标行时才累加current_pos,如果目标行不在第一行就会进入死循环
  • 硬编码取行的索引位置,一旦行内空格数量变动就会取错值,鲁棒性极差
  • 未手动关闭打开的文件句柄,存在资源泄漏风险
  • 额外编写的计算文件行数的函数完全冗余,逐行遍历文件即可实现需求

修正后代码

import os

root = os.getcwd()
file = "test.txt"
file_name = os.path.join(root, file)

# 上下文管理器自动管理文件句柄,无需手动关闭
with open(file_name, 'r', encoding='utf-8') as f:
    for row in f:
        row = row.strip()
        # 匹配以(2开头的目标行
        if row.startswith("(2"):
            # 去除行内括号后按空格拆分,取第二个值即为维度
            parts = row.replace('(', '').replace(')', '').split()
            dim = parts[1]
            print(f"Dimensions = {dim}")
            # 匹配到后直接终止遍历,提升效率
            break

补充说明

如果严格要按行号定位(比如确定维度信息一定在第8行),可以直接用enumerate获取行号匹配,无需判断行开头:

import os

root = os.getcwd()
file = "test.txt"
file_name = os.path.join(root, file)

with open(file_name, 'r', encoding='utf-8') as f:
    for line_num, row in enumerate(f, start=1):
        if line_num == 8:
            parts = row.replace('(', '').replace(')', '').split()
            dim = parts[1]
            print(f"Dimensions = {dim}")
            break

内容的提问来源于stack exchange,提问作者Dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 07:12:03