我想在文件" original.txt"中插入一行。 (该文件包含大约200行)。在现有行之一中找到字符串后,行neds将插入两行。这是我的代码,我使用了几个打印选项,告诉我该行正在添加到列表中,在我需要的位置,但文件" original.txt"没有被编辑
with open("original.txt", "r+") as file:
lines = file.readlines() # makes file into a list of lines
print(lines) #test
for number, item in enumerate(lines):
if testStr in item:
i = number +2
print(i) #test
lines.insert(i, newLine)
print(lines) #test
break
file.close()
我正在将文本中的行转换为列表,然后在查找字符串时枚举行,将行的值分配给i并添加2,以便新行插入后两行, print()小说显示该行已添加到正确的位置,但文本" original.txt"未修改
答案 0 :(得分:4)
您似乎误解了您的代码正在做什么。让我们一行一行
with open("original.txt", "r+") as file: # open a file for reading lines = file.readlines() # read the contents into a list of lines print(lines) # print the whole file for number, item in enumerate(lines): # iterate over lines if testStr in item: i = number +2 print(i) #test lines.insert(i, newLine) # insert lines into the list print(lines) #test break # get out of the look file.close() # not needed, with statement takes care of closing
您没有修改该文件。您将文件读入字符串列表并修改列表。要修改实际文件,您需要将其打开以进行写入并将列表重新写入其中。在代码末尾的这样的东西可能会起作用
with open("modified.txt", "w") as f: for line in lines: f.write(line)
答案 1 :(得分:1)
您从未修改过原始文字。您的代码将行读入本地内存,一次一个。识别触发器时,计算两行,然后将未定义值 newLine 插入本地副本。您的代码中没有任何内容可以修改原始文件。
一种方法是关闭文件,然后从最终的行值重写它。在阅读文件时不修改文件 - 最好全部阅读,然后开始处理。
另一种方法是随时写入新文件,然后使用系统命令将原始文件替换为新版本。