[EMAIL PROTECTED] wrote: > I create list of files, open each file in turn, skip past all the blank > lines, and then process the first line that starts with a number (see > code below) > > filenames=glob.glob("C:/*.txt") > for fn in filenames: f = open(fn) for line in f: if line[:1] in digits: ProcessLine(line) break f.close()
A for instead of the inner while loop makes the f.next() call implicit. > If a file has only blank lines, the while loop terminates with a > StopIteration. How can I just close this file andd skip to the next > file if a StopIteration is raised? I tried the following: > > filenames=glob.glob("C:/*.txt") > for fn in filenames: > f =file(fn) > line = " " > while line[0] not in digits: > try: > line = f.next() > except StopIteration: break else: # only if StopIteration was not triggered # and thus break not reached ProcessLine(line) f.close() > but got only a ValueError: I/O operation on closed file for line = > f.next(). It appears that the continue is taking me back to the top of > the while loop. How can I get back to the top of the for loop? By breaking out of the while loop as shown above. (all changes untested) Peter -- http://mail.python.org/mailman/listinfo/python-list