[英]how to add a text dynamically to several files in python
我有几个文件,想在 python 中向它们添加一些文本(命名为changed_1
、 changed_2
、 changed_3
等等)。 这是我的文件的一些行(但我的文件有数千行):
$MeshFormat
2.2 0 8
$EndMeshFormat
$PhysicalNames
8
2 12 "back"
2 14 "Fault"
3 1 "volume_1"
$EndPhysicalNames
...
我想在第 8 行( 3 1 "volume_1"
)之后添加 line/s。 这些行也应该动态生成。 我有另一个名为n_iteration
变量。 如果n_iteration
是 2,我想在第 8 行之后添加3 2 "volume_2"
。 如果是 3,我想添加3 2 "volume_2"
和3 3 "volume_3"
等等。 最后,我想让我的文件完全像输入格式一样更改和保存,但添加了这些行(假设n_iteration = 4
):
$MeshFormat
2.2 0 8
$EndMeshFormat
$PhysicalNames
8
2 12 "back"
2 14 "Fault"
3 1 "volume_1"
3 2 "volume_2"
3 3 "volume_3"
3 4 "volume_4"
$EndPhysicalNames
...
我只能导入我的所有文件并使用以下代码对它们进行排序,但我没有成功地执行我所解释的:
from glob import glob
all_files = glob('changed_*')
for i in all_files:
with open(str(i)) as lines:
...
在此之前,我感谢任何帮助和反馈。
您需要了解文件与其内容之间的区别。 您需要了解如何读入文件的内容,以及在写入文件时可以做什么和不可以做什么。 一般情况下,可以写到文件末尾,也可以覆盖文件,但不能插入文件。 您可以通过读入文件内容来创建插入效果,然后用添加的新内容将其写回。
一种方法:您逐行读取文件,以便获得行list
。 如果你总是在第八行之后插入你的新数据,你现在可以将内容一一写出来,然后在你写出第八行之后,写出你的新数据,然后继续你剩下的内容一开始就读进去。
这基本上是@Bens 注释的代码,除了我在写入时直到第 8 行才计算,而是插入要添加到读取列表中的内容,然后将所有内容写入文件
with open("test.txt", "r") as f:
data = f.readlines()
n_iteration = 2
for i in range(n_iteration,0,-1):
data.insert(7, ('3 ' + str(i) +' "volume_' + str(i) + '"\n'))
with open("test_new.txt", "w") as f:
for c in data:
f.write(c)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.