用 Python 一键修改 inp 文件——Isight 参数化建模的一个实用小技巧
在做 Isight 参数化仿真时,很多人都会遇到一个非常现实的问题:👉 CAE 输入文件(如 .inp)很大,参数埋得很深,只想改其中几行材料参数,怎么办?
用 Python 精确修改指定行号的内容,并通过 bat 文件调用,实现 Isight 参数化。
一、问题背景
以 Abaqus/OptiStruct 等求解器的 .inp 文件为例:👉 那我们就让Python 来做文本修改,Isight 只负责传参和运行。
二、核心思路
三、Python 核心函数:按行号修改文件
下面是完整的 Python 函数,用于替换指定行号范围的内容:defmodify_lines_in_file(file_path, start_line, end_line, replacement_lines)::param start_line: 开始行(从1开始计数):param end_line: 结束行(从1开始计数,包含此行):param replacement_lines: 替换的行内容列表读取源文件内容
withopen(file_path, 'r', encoding='utf-8') as file:检查替换范围是否有效
if start_line < 1or end_line > len(lines) or start_line > end_line:raise ValueError("Invalid line range specified")替换指定范围的行
lines[start_line - 1:end_line] = replacement_lines写回源文件
withopen(file_path, 'w', encoding='utf-8') as file:
四、材料参数的参数化示例
Isight 参数
.inp 文件中对应的是第 1015075 ~ 1015078 行,那就直接这样写:file_path = 'aaa.inp'#文件路径start_line = 1015075#初始行号str(E1)+","+str(E2)+","+str(E3)+", 0.27, 0.27, 0.27, 3800., 3800.\n""3000., 0., 0., 0., 0., 0., 0., 0.\n""2470., 1062.,"+str(T2)+","+str(C2)+","+str(T3)+","+str(C3)+", 0., 0.\n"""+str(G12)+","+str(G23)+","+str(G31)+"\n"modify_lines_in_file(file_path, start_line, end_line, replacement_lines)replacement_lines 的行数必须和替换范围一致
五、bat 文件调用方式
六、Isight中调用方法