文本文件的名称和路径为
r"D:\Restart\LS-DYNA\ball_plate2.k"
文件中有一行的内容是
*ELEMENT_SOLID
我想在这一行之前加如下内容:
*INITIAL_VELOCITY_RIGID_BODY
$# pid vx vy vz vxr vyr vzr icid
4 0.0 0.0 -5.0 0.0 0.0 0.0 0
请问代码如何写?谢谢大家啦
# 打开文件并读取所有行
with open(r"D:\Restart\LS-DYNA\ball_plate2.k", 'r') as f:
lines = f.readlines()
# 在指定行之前插入新的内容
new_lines = []
for line in lines:
if line.startswith('*ELEMENT_SOLID'):
new_lines.append('*INITIAL_VELOCITY_RIGID_BODY\n')
new_lines.append('$# pid vx vy vz vxr vyr vzr icid\n')
new_lines.append(' 4 0.0 0.0 -5.0 0.0 0.0 0.0 0\n')
new_lines.append(line)
# 写入文件
with open(r"D:\Restart\LS-DYNA\ball_plate2.k", 'w') as f:
f.writelines(new_lines)
最后,使用with open()语句再次打开文件,将new_lines列表中的所有行写入文件中,完成插入操作。注意,在写入文件时需要使用w模式打开文件,这将清空文件中的所有内容,所以在new_lines列表中也需要包含原来的所有行内容。
filename = r"D:\Restart\LS-DYNA\ball_plate2.k"
insert_lines = ["*INITIAL_VELOCITY_RIGID_BODY\n",
"$# pid vx vy vz vxr vyr vzr icid\n",
" 4 0.0 0.0 -5.0 0.0 0.0 0.0 0\n"]
insert_before = "*ELEMENT_SOLID\n"
with open(filename, 'r+') as f:
lines = f.readlines()
f.seek(0) # 回到文件开头
for line in lines:
if line.startswith(insert_before):
f.writelines(insert_lines) # 在目标行前插入内容
f.write(line)
f.truncate() # 截断文件,确保删除多余的行
不知道你这个问题是否已经解决, 如果还没有解决的话: