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

Python 如何在不重写文本文件的情况下更新文本文件,python,text-files,Python,Text Files,我如何在不重写文件或搜索我要更新的值的情况下更新文件,以便在文件中显示以下数据: 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中的写入模块的情况下实现? 如果不可

我如何在不重写文件或搜索我要更新的值的情况下更新文件,以便在文件中显示以下数据:

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


查看有关如何使用完整文件重写进行单行编辑的提示。

如果您仅使用文本文件,则不需要,您需要将整个文件写回

这就是为什么会有很多其他文件格式,比如SQL


查看有关如何使用完整文件重写进行单行编辑的提示。

您可以找到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()

您可以找到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)

这也行得通

我已经这样做了,但是谢谢你的建议

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)
这同样有效