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

如何使用索引删除文本文件python中的特定行?,python,file,text,tkinter,Python,File,Text,Tkinter,例如,我有一个文本文件:subc.txt,它包含以下文本(subject | time) 顺便说一句,我正在使用tkinter创建gui。单击按钮时,将出现一个带有文本输入的窗口,程序将要求用户输入要删除的课程。因此,当用户选择astro1并单击按钮时,文本文件中的astro1将被删除,ac2和speech 2将上升。代码是什么 例如,我有一个名为self.courseent的entrybox,下面有一个按钮函数: f=open("subj.txt",'r') for x in f:

例如,我有一个文本文件:subc.txt,它包含以下文本(subject | time)

顺便说一句,我正在使用tkinter创建gui。单击按钮时,将出现一个带有文本输入的窗口,程序将要求用户输入要删除的课程。因此,当用户选择astro1并单击按钮时,文本文件中的astro1将被删除,ac2和speech 2将上升。代码是什么

例如,我有一个名为self.courseent的entrybox,下面有一个按钮函数:

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

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

实际上,文件不允许您简单地从文件中删除一行。 您需要做的是将内存中的所有文件作为列表读取,从列表中删除该行,然后以写模式重新打开该文件并重写所有内容。 如果您的文件太大,无法加载到内存中,则应写入其他文件,然后将临时文件复制到文件中


这可以帮助您。是的,这篇文章接近解决方案,但在我的代码中,我将整条线拆分为管道,很难使用if a[0]!=x条件。使用上面的代码,你怎么能删除它呢?你不能删除,正如帖子所说的和@Luc DUZAN所说的,你应该将它复制到一个列表中,按巡更条件从列表中删除,然后将其写入文件。
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