altering an object as you iterate over it?

John Salerno johnjsal at NOSPAMgmail.com
Fri May 19 15:28:35 EDT 2006


John Salerno wrote:
> What is the best way of altering something (in my case, a file) while 
> you are iterating over it? I've tried this before by accident and got an 
> error, naturally.
> 
> I'm trying to read the lines of a file and remove all the blank ones. 
> One solution I tried is to open the file and use readlines(), then copy 
> that list into another variable, but this doesn't seem very efficient to 
> have two variables representing the file.
> 
> Perhaps there's also some better to do it than this, including using 
> readlines(), but I'm most interested in just how you edit something as 
> you are iterating with it.
> 
> Thanks.

Slightly new question as well. here's my code:

phonelist = open('file').readlines()
new_phonelist = phonelist

for line in phonelist:
     if line == '\n':
         new_phonelist.remove(line)

import pprint
pprint.pprint(new_phonelist)

But I notice that there are still several lines that print out as '\n', 
so why doesn't it work for all lines?



More information about the Python-list mailing list