On Thu, 22 Mar 2007, Jason Massey wrote: > In the interpreter this doesn't work: > > >>> f = open(r"c:\python24\image.dat") > >>> line = f.readline() > >>> while line: > ... line = f.readline() > ... f.close() > Traceback ( File "<interactive input>", line 3 > f.close() > ^ > SyntaxError: invalid syntax
The interactive interpreter was expecting a blank line to end the suite of the compound statement. Without the blank line, it interpreted the close statement to be part of the suite; and since it's not indented as the suite should be, it's a syntax error. The blank line requirement is only in interactive sessions: Note that a (top-level) compound statement must be followed by a blank line in interactive mode; this is needed to help the parser detect the end of the input. http://docs.python.org/ref/interactive.html > But this does: > > >>> f = open(r"c:\python24\image.dat") > >>> line = f.readline() > >>> while line: > ... line = f.readline() > ... > >>> f.close() > >>> > > Note the differing placement of the f.close() statement, it's not part of > the while. The difference is that this time you gave it the blank line to end the suite. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor