我如何在不重写文本文件的情况下更新它

How would I update a text file without rewriting it

我将如何在不重写文件的情况下更新文件或除了搜索我想要更新的值之外的任何内容,所以让我们在文件中说我有这个数据:

George|40|19|80|yes
Bob|19|20|01|no
James|30|19|90|yes

但是我想在不覆盖整个文件的情况下搜索 Bob 并将 bob 更改为

Bob|23|20|01|yes

但其中仍有值但已更新:

George|40|19|80|yes
Bob|23|20|01|yes
James|30|19|90|yes

是否可以在不使用 python 中的写入模块的情况下执行此操作?
如果这不可能,那么很抱歉浪费您的时间

如果您只是使用文本文件,则不行,您需要将整个文件写回。

这就是为什么存在大量其他文件格式,并且存在诸如 SQL 之类的东西的原因。

查看 this answer 以获取有关如何使用全文件重写进行单行编辑的提示。

您可以找到“Bob”的索引,然后使用 seek() 函数将光标移动到那里,最后覆盖该行。

f = open("test.txt", "r+")
text = f.read()
cursor_index = text.find("Bob")
f.seek(cursor_index)
f.write("Bob|23|20|01|yes\n")
f.close()

我已经这样做了,但感谢您的建议

with open('accounts_project.txt','r+') as f:
    global newline
    newline=[]
    for line in f.readlines():
        newline.append(line.replace(backup, lockaccount))
    newline= "".join(newline)
with open('accounts_project.txt','w+') as f:
    for line in newline:
        f.writelines(line)

这也有效