如何使用索引删除文本文件中的特定行?

0 投票
1 回答
899 浏览
提问于 2025-04-18 00:47

比如我有一个文本文件: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

你的问题看起来很像这个问题:

如何在C#中删除文本文件的一行?

其实,文件并不允许你直接删除某一行。你需要先把整个文件的内容读到内存中,变成一个列表,然后从这个列表中删除你想要删除的那一行。接着,你要以写入模式重新打开这个文件,把所有内容重新写进去。如果你的文件太大,无法一次性加载到内存中,你可以先写入到另一个文件中,然后再把这个临时文件的内容复制回原来的文件。

https://docs.python.org/2/library/tempfile.html

撰写回答