如何使用索引删除文本文件中的特定行?
比如我有一个文本文件:subj.txt,里面的内容是这样的(主题|时间)
astro1|1:00-2:00
act2|2:00-3:00
speech1|4:00-5:00
顺便说一下,我正在使用tkinter来创建一个图形界面。当用户点击一个按钮时,会弹出一个输入框,程序会要求用户输入要删除的课程名称。所以当用户选择了astro1并点击按钮后,astro1就会从文本文件中删除,而ac2和speech 2会往上移动。这个功能的代码应该怎么写呢?
例如,我有一个输入框,名字叫self.courseent,下面有一个函数是用来处理按钮点击的:
f=open("subj.txt",'r')
for x in f:
a=x.split('|')
if self.courseent.get()==a[0]:
#the line where the a[0] will be deleted
1 个回答
2
你的问题看起来很像这个问题:
其实,文件并不允许你直接删除某一行。你需要先把整个文件的内容读到内存中,变成一个列表,然后从这个列表中删除你想要删除的那一行。接着,你要以写入模式重新打开这个文件,把所有内容重新写进去。如果你的文件太大,无法一次性加载到内存中,你可以先写入到另一个文件中,然后再把这个临时文件的内容复制回原来的文件。