这是我的代码
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
我确实尝试过追加和写入模式,两者都做同样的
那么,如何在不覆盖的情况下书写?
答案 0 :(得分:1)
问题是您希望写入插入在当前位置。设置文件位置时,它将开始在该位置写入并覆盖数据。
为防止覆盖,您需要在写入数据后重新写入数据
fo1.seek(-3, 2)
end_data = fo1.read()
fo1.seek(-3, 2)
fo1.write('\nalways\nnot\n')
fo1.write(end_data)
此外,您不需要在python中使用分号。