les> suppose I am reading lines from a file or stdin. I want to just les> "peek" in to the next line, and if it starts with a special les> character I want to break out of a for loop, other wise I want to les> do readline().
Create a wrapper around the file object: class PeekFile: def __init__(self, f): self.f = f self.last = None def push(self, line): self.last = line def readline(self): if self.last is not None: line = self.last self.last = None return line return self.f.readline() def __getattr__(self, attr): return getattr(self.f, attr) Then use it like so: stdin = PeekFile(stdin) while 1: line = stdin.readline() if not line: break if line[0] == "|": stdin.push(line) break else: # do something with line Of course, this could be tested (which my example hasn't been), PeekFile can probably can be written as a subclass of the file class, and made more generally robust (handle filenames as inputs instead of file objects, support write modes, etc), but this should give you the general idea. Skip -- http://mail.python.org/mailman/listinfo/python-list