我想这样打开alan.txt,在文本中搜索scholary_tehologian的所有实例,如果找到,添加单词" test"在它下面。当我尝试这样做时:
## Script
with open('alan.txt', 'r+') as f:
for line in f:
if "scholarly_theologian" in line:
f.write("test")
它不会写任何东西。我在Windows 8.1中
答案 0 :(得分:1)
重写的答案,因为最后一个是错误的。
如果您想阅读行,您必须在打开(...)或 f 之后添加 .readlines()。然后有几种方法可以插入" test"。
## Script
with open('alan.txt', 'r') as f:
lines = f.readlines()
for i in range(len(lines)):
if "scholarly_theologian" in lines[i]:
lines[i] = lines[i] + "\ntest"
with open('alan.txt', 'w') as f:
f.write("\n".join(lines))
答案 1 :(得分:1)
您无法像这样修改文件。您只能附加到它,写字符而不是其他字符,或完全重写它。请参阅How do I modify a text file in Python?。
您应该做的是使用您想要的内容创建另一个文件。
修改强>
克劳迪奥的答案有我提供的代码。没有将整个文件保存在内存中的好处(超过manicphase代码)。如果文件很长,这很重要。另一方面,manicphase的回答是不创建第二个文件的好处。它重写了原始的。选择适合您需求的那个。
答案 2 :(得分:0)
这应该可以解决问题:
with open('output.txt', 'w') as o:
with open('alan.txt', 'r') as f:
for line in f:
o.write(line)
if line.find('scholarly_theoligian'):
o.write('test')
与提到的Ella Shar一样,您需要创建一个新文件并将新内容添加到其中。
如果不能使用两个文件,则下一步是删除输入文件,并重命名输出文件。