The lesson here is not to try to do two things at once... > file.next() > TypeError: descriptor 'next' of 'file' object needs an argument
OK, My algorithm was meant to be pseudo code so file was not intended to be taken literally, its just a marker for an open file object. > And, it is true that I am trying to build a list and not overwrite > the value. OK, That adds a bit more tweaking... >> Personally I'd use a flag to detect when field had >> been found and set - ie set field to None and then >> test for that changing, then test for Leaf as you do. That was before I went back to testing my own project.... >> So I think your algorithm should be >> >> for line in file >> if 'Field' in line: >> field = int(line.split()[-1]) and this was after - with no flag anywhere in sight! Oops. I intended the if test to include a check for field == None... if field == None and 'Field' in line:.... >> elif 'Leaf' in line: >> fields[field] = line.split()[-1] >> else: file.next() >> >> But I think there's another problem in that you are >> then overwriting the value of Leaf when I think you >> are trying to build a list? So we need to create an empty list entry where we define field and then append here, so my pseudo code now becomes: f = open('foo.dat') for line in f: if field == None and 'Field' in line: field = int(line.split()[-1]) fields[field] = [] elif 'Leaf' in line: fields[field].append(line.split()[-1]) else: f.next() still untested I'm afraid, so it still may not work. HTH, Alan G. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor