python - 如何一次读取并附加到文本文件?

标签 python file file-writing file-read

我想检查一个字符串是否在文本文件中,如果不存在则追加该字符串。

我知道我可以通过创建两个单独的 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。在所有情况下,内容的长度都不是文件的长度。要么使用二进制文件读取,要么使用两个单独的 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")

关于python - 如何一次读取并附加到文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36965852/

相关文章:

python - 如何根据索引位置将列表列表连接到另一个小列表?

python - 类似口袋妖怪的文字显示

python - pyparsing 的嵌套字典输出

c++ - fin.ignore()跳过文件中的行?

Android - 记录时检查文件大小

java - 如何从 Java 高效地将 For 循环(700,000 行)内容写入文件?

java - 检查用户输入的文件名/路径是否有效

python - ipython pyspark 'range' 对象没有属性 'defaultParallelism'

java - 如何在目录中搜索带有re的文件?

c - 在命令行上终止 C 程序,但确保编写器已完成编写