python中的哪种搜索模式用于写入而不覆盖?

时间:2016-04-19 17:05:14

标签: python

这是我的代码

fo = open("foo.txt", "r")
a = fo.readlines();
fo1 = open("write.txt", "w")
j=len(a)
print j
i=0


while i < j:

    if (a[i] == "hi\n" ): 

      fo1.write('hi\nhow\nare\nyou');

       if (a[i] == "hello\n" ): 

        fo1.seek(-3, 2)
        fo1.write('\nalways\nnot\n');

         i += 1


         fo.close()
         fo1.close()

有两个文本文件

1)foo.txt - 包含

hi
hello

2)write.txt是空白文件

用hello检查[i],因为它是hello,它将执行此代码语句

fo1.write('hi\nhow\nare\nyou');

所以,write.txt将是这样的

how
are
you

之后它检查它有[i]是你好 因为它是hi,它会将指针从end移动到-3并将编写此代码语句

fo1.write('\nalways\nnot\n');

输出应该像

How
are
always
not
you

但我得到的当前输出是

How
are
always
not

以上输出已被“删除” 预期的输出是

How
are
always
not
you

我确实尝试过追加和写入模式,两者都做同样的

那么,如何在不覆盖的情况下书写?

1 个答案:

答案 0 :(得分:1)

问题是您希望写入插入在当前位置。设置文件位置时,它将开始在该位置写入并覆盖数据。

为防止覆盖,您需要在写入数据后重新写入数据

fo1.seek(-3, 2)
end_data = fo1.read()
fo1.seek(-3, 2)
fo1.write('\nalways\nnot\n')
fo1.write(end_data)

此外,您不需要在python中使用分号。