[EMAIL PROTECTED] wrote: > Hi, > suppose I am reading lines from a file or stdin. > I want to just "peek" in to the next line, and if it starts > with a special character I want to break out of a for loop, > other wise I want to do readline(). > > Is there a way to do this? > for example: > while 1: > line=stdin.peek_nextline() > if not line: break > if line[0]=="|": > break: > else: > x=stdin.nextline() > # do something with x > > thanks
The itertools approach: (some preparations) >>> import itertools >>> file("tmp.txt", "w").write("""\ ... a ... b ... c ... | ... d ... e ... f ... """) (1) You are only interested in lines after and including the "special" line: >>> def predicate(line): ... return not line.startswith("|") ... >>> for line in itertools.dropwhile(predicate, file("tmp.txt")): ... print line, ... | d e f (2) You want both the "head" and the "tail", where the tail includes the "special" line: >>> lines = iter(file("tmp.txt")) >>> for line in lines: ... if line.startswith("|"): ... lines = itertools.chain([line], lines) ... break ... print "head", line, ... head a head b head c >>> for line in lines: ... print "tail", line, ... tail | tail d tail e tail f >>> Peter -- http://mail.python.org/mailman/listinfo/python-list