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

如何用Python读取inp文件中Face9下方至星号间的数值行?

问题描述

需要读取并打印inp文件中特定区间的数值行,读取范围为Face9所在行下方至一行连续星号(***********************************************************)之间的内容,要求以星号作为结束定位参数。此前尝试使用find()和seek()函数定位Face9的位置,但调用seek()跳转后无法正确获取目标数值,出现位置不匹配的问题。

目标数据段示例:


** constraints force node loads
*CLOAD
** ConstraintForce
** node loads on shape: Connect:Face9
10,1,0.0000000000000E+00
11,1,0.0000000000000E+00
26,1,0.0000000000000E+00
27,1,0.0000000000000E+00
80,1,6.2500000000000E+01
152,1,0.0000000000000E+00
153,1,0.0000000000000E+00
154,1,0.0000000000000E+00
155,1,6.2500000000000E+01
156,1,6.2500000000000E+01
157,1,6.2500000000000E+01
158,1,6.2500000000000E+01
159,1,0.0000000000000E+00
160,1,0.0000000000000E+00
161,1,0.0000000000000E+00
162,1,6.2500000000000E+01
163,1,6.2500000000000E+01
164,1,6.2500000000000E+01
165,1,6.2500000000000E+01
166,1,6.2500000000000E+01
424,1,1.2500000000000E+02
425,1,1.2500000000000E+02
426,1,1.2500000000000E+02
427,1,1.2500000000000E+02
428,1,1.2500000000000E+02
429,1,1.2500000000000E+02
430,1,1.2500000000000E+02


解决方案

不推荐使用seek()和find()处理文本文件的行定位——不同操作系统的换行符(\n/\r\n)会导致字节计数偏移,容易出现位置不匹配的问题。更可靠的方式是逐行读取文件,通过状态标记筛选目标内容,以下是Python实现示例:

STAR_LINE = "***********************************************************"
TARGET_MARKER = "Face9"

with open("your_file.inp", "r") as f:
    collect = False
    for line in f:
        stripped_line = line.strip()
        # 检测到Face9所在行,开启收集状态
        if TARGET_MARKER in line:
            collect = True
            continue  # 跳过Face9所在行本身
        # 检测到结束星号行,停止收集
        if stripped_line == STAR_LINE and collect:
            break
        # 处于收集状态且非空行,打印或处理内容
        if collect and stripped_line:
            print(stripped_line)

代码说明

  • 定义STAR_LINE为结束标记的星号行,TARGET_MARKER为起始定位的关键词
  • 用collect布尔变量标记是否进入目标数据区间
  • 逐行读取时:
    • 遇到包含Face9的行,开启收集状态并跳过该行
    • 遇到匹配的星号行且处于收集状态时,终止循环
    • 收集状态下,打印非空的数值行

这种方法完全基于行内容判断,不受换行符差异影响,能精准定位目标区间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:15:40