脚本不写入文件

时间:2015-04-18 16:51:31

标签: python

我想这样打开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中

3 个答案:

答案 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一样,您需要创建一个新文件并将新内容添加到其中。

如果不能使用两个文件,则下一步是删除输入文件,并重命名输出文件。