繁体   English   中英

如何在python中将文本动态添加到多个文件中

[英]how to add a text dynamically to several files in python

我有几个文件,想在 python 中向它们添加一些文本(命名为changed_1changed_2changed_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM