我有一个文本文件作为模型的启动文件。它看起来像这样:n次读写行
foo1
foo2
bar, foo, yolo
1, 2, 3
foo3
foo4
第3行是标题,第4行取值,两行都需要重复,具体取决于x的大小。假设x = 3。下面的行不应该被覆盖,而是向下移动。前面的行(foo1 & foo2)是动态生成的,所以不一定只有两行,因此我不能通过它们的索引访问它们!
所以我的文件应该再是这样的:
foo1
foo2
bar, foo, yolo
1, 2, 3
bar, foo, yolo
1, 2, 3
bar, foo, yolo
1, 2, 3
foo3
foo4
我到目前为止的想法:
initraw = open('fileX.txt', "r") #opening raw file for reading
initwrite= open('fileY.txt', "w") #opening file for writing
initline = initraw.readlines() #writing content of raw file into string
x = 3
for line in initline:
initwrite.writelines(line,)
if line.startswith('bar, foo, yolo'):
for i in range(x):
initwrite.writelines(initline[2])
initwrite.writelines(initline[3])
initwrite.close() #closing file
initraw.close() #closing raw file
任何建议如何解决此问题?现在,这看起来像这样:
foo1
foo2
bar, foo, yolo
bar, foo, yolo
1, 2, 3
bar, foo, yolo
1, 2, 3
1, 2, 3
foo3
foo4
所以我需要跳过“bar,foo,yolo”之后的第一行。
不会这样写的'bar'线和'1,2,3'线之间的界限?你应该找到你想要的新行的索引,并使用'insert'将它们添加到'initline'中。 (这是因为'readlines'返回一个字符串列表,而不是一个字符串) –
@PatrickHaugh看到我最后的编辑...是的,你是对的。但是我需要复制这些行之前的行数不是固定的,所以我需要不幸地使用'startswith'。 – GeoEki