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

时间:2020-07-22 10:53:12

标签: 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中的write模块的情况下做到这一点?
如果无法执行此操作,那么抱歉浪费您的时间

3 个答案:

答案 0 :(得分:1)

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

这就是为什么会加载其他文件格式并且存在类似SQL之类的原因的原因。

请查看this answer,以获取有关如何通过全文件重写来进行单行编辑的提示。

答案 1 :(得分:1)

您可以找到“鲍勃”的索引,然后使用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()

答案 2 :(得分:0)

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

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)

这也很好

相关问题