我想检查一个字符串是否在文本文件中,如果不在文本文件中,则追加该字符串。
我知道我可以通过创建两个单独的with
方法来实现,一个用于读取,另一个用于追加,但是是否可以在同一个with
方法中读取和追加?
我最近想到的是:
with open("file.txt","r+") as file:
content=file.read()
print("aaa" in content)
file.seek(len(content))
file.write("\nccccc")
我的文件.txt:
aaaaa
bbbbb
当我第一次运行代码时,我得到:
aaaaa
bbbbb
ccccc
但如果我再运行一次,就会出现:
aaaaa
bbbbb
ccc
ccccc
我希望第三行是ccccc
。
任何人都可以解释为什么最后两个字符在第二次运行时被截断?另外,如何读取文本并将其附加到文件中?
seek()
是基于字节的,并且您的文本文件不能用每个字符正好一个字节进行编码。由于read()
读取整个文件并将指针放在末尾,因此无论如何都不需要搜索。只要从代码中删除这一行,它就可以正常工作了。不要对文本文件使用
seek
。在所有情况下,内容的长度都不是文件的长度。使用二进制文件读取或使用两个单独的with:使用这个:
在这里,我们将
fileObject.seek(offset[, whence])
与offset 0
&;whence 2
一起使用,即从末尾寻找0个字符。然后写入文件。或(交替使用SEEK_END):
在这里,我们寻找文件的
SEEK_END
(带有os包),然后写入它。相关问题 更多 >
编程相关推荐