Python如何在文本文件某一行前插入数行内容?

文本文件的名称和路径为

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()语句打开文件,并通过readlines()方法读取所有行,将其保存到lines列表中。

然后,遍历lines列表,找到需要插入新内容的指定行。在这个例子中,我们需要在以*ELEMENT_SOLID开头的行之前插入新内容。如果找到了这一行,就在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()  # 截断文件,确保删除多余的行

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^