使用Python在btw文件中插入一些行

2024-10-04 05:30:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我的意图是在与某些条件匹配的某些行之间添加一些行(这些条件不是直接的,而是从代码逻辑派生的)。 我使用tell()函数来获取新行的放置位置。另外,我使用readlines()将文本部分保存到这个位置,并将文件的其余部分保存在两个列表中,如下所示。你知道吗

这样,我计划将新行添加到第一个列表中,然后附加到第二个列表中,以便将它们一起写入原始文件。你知道吗

fp.open("path", "r")
<some logic to find where the new lines are to be inserted>
insertPos = fp.tell()
firstPart = fp.readlines(insertPos)
secondPart = fp.readlines()
firstPart.insert(len(firstPart)+1, newLines)
newContent = firstPart+secondPart)
fp.writelines(newContent)
fp.close()

但问题是, 当readlines()使用tell()的第一个输出完成时,为了放置合并列表,它没有指向文件中的正确行。它向前移动了更多的线。i、 第一部分并不是完全在insertPos处分裂。 有什么我不知道的吗?任何帮助都将不胜感激。你知道吗


Tags: 文件to函数代码列表逻辑条件意图
2条回答

如果文件不是很大,我会这样做,而不是搞乱缓冲区的位置:

lines = list(open(filename))
i = ... # figure out what line you want to insert before
lines.insert(i,new_line)
open(filename,'w').write('\n'.join(lines))

如果您只是将整个文件读入一个列表,然后修改该列表并将其写出,那么您的逻辑就会简单得多。你知道吗

在这里,我们使用切片表示法将整个列表lines_to_add添加到位置loc

lines = fp.readlines()
new_lines = lines[:loc] + lines_to_add + lines[loc:]

那就写出来吧。你知道吗

相关问题 更多 >