Iterate over text file, discarding some lines via context manager

ast nomail at
Fri Nov 28 18:06:02 CET 2014


Here is a solution with a custom iterator which operate on files.
I tested it with a small file. Just a remark, there are no empty line
on a file, there is at least '\n' at the end of each lines but maybe the 
last one. If readline() got an emptyline, then the end of file has been 

class MyFileItr:
    def __init__(self, f):
        self.f = f
        self.line = ""

    def __next__(self):

        while True:
            self.line = self.f.readline()

            if (self.line == ''):
                raise StopIteration
            if not(self.line.startswith('#') or self.line.isspace() or self.line == '\n'):
                return self.line

    def __iter__(self):
        return self

f = open('test.txt', 'r')

for L in MyFileItr(f):
    print(L, end="")

More information about the Python-list mailing list