Delete a certain line from a file

Steve Purcell stephen_purcell at yahoo.com
Tue Feb 13 09:39:06 EST 2001


Gustaf Liljegren wrote:
> Excuse another newbie question. My script is reading a textfile with a list
> of words (separated with newlines), and now I need something to delete a
> certain record when I encounter it in a loop. Something like:
> 
> for line in f.readlines():
>   if line == "somethingbad":
>     # delete the whole line with newline
>     break

Note that 'readlines' always reads the whole file into memory anyway...

> 
> I have successfully done this by adding each line to a list and then used
> list.remove("somethingbad"), but there's another way without having to put
> the whole file in a list, isn't it?

Yes, filter the file into another file then rename it:

  infile = open(inputfilename,'r')
  outputfile = open(outputfilename, 'w')

  while 1:
    line = infile.readline()
    if not line: break
    if line != "somethingbad":
      outfile.write(line)

  infile.close()
  outfile.close()
  os.rename(outputfilename, inputfilename)

-Steve

-- 
Steve Purcell, Pythangelist
http://pyunit.sourceforge.net/
http://pyserv.sourceforge.net/
Available for consulting and training.
"Even snakes are afraid of snakes." -- Steven Wright




More information about the Python-list mailing list