我如何在不重写文件的情况下更新文件,或者只搜索要更新的值,所以在文件中说我有以下数据:
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模块的情况下做到这一点?
如果无法执行此操作,那么抱歉浪费您的时间
答案 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)
这也很好