如何一次读取和附加到文本文件?

mul*_*rse 3 python file file-read file-writing

我想检查一个字符串是否在文本文件中,然后附加该字符串,如果它不存在.

我知道我可以通过创建两个单独的with方法来实现这一点,一个用于读取,另一个用于追加,但是是否可以在同一个with方法中读取和追加?

我想出的最接近的是:

with open("file.txt","r+") as file:
    content=file.read()
    print("aaa" in content)
    file.seek(len(content))
    file.write("\nccccc")
Run Code Online (Sandbox Code Playgroud)

我的file.txt:

aaaaa
bbbbb
Run Code Online (Sandbox Code Playgroud)

当我第一次运行代码时,我得到了这个:

aaaaa
bbbbb
ccccc
Run Code Online (Sandbox Code Playgroud)

但是,如果我再次运行它,这会出现:

aaaaa
bbbbb
ccc
ccccc
Run Code Online (Sandbox Code Playgroud)

我希望第三行是ccccc.

任何人都可以解释为什么在第二次运行中截断最后两个字符?另外,如何读取文本并将其附加到文件中?

Dan*_*iel 6

不要seek在文本文件上使用.在所有情况下,内容的长度不是文件的长度.要么使用二进制文件读取,要么使用两个单独的withs:

with open("file.txt","r") as file:
    content=file.read()
print("aaa" in content)
with open("file.txt","a") as file:
    file.write("\nccccc")
Run Code Online (Sandbox Code Playgroud)