Iterate over text file, discarding some lines via context manager
ast
nomail at invalid.com
Fri Nov 28 12:06:02 EST 2014
Hi
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
reached.
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