Steven W. Orr wrote: >>From the tutorial, they said that the following construct will > automatically close a previously open file descriptor: > > ------------------- > #! /usr/bin/python > import sys > > for nn in range ( 1, len(sys.argv ) ): > print "arg ", nn, "value = ", sys.argv[nn] > with open(sys.argv[nn]) as f: > for line in f: > print line, > ------------------ > > but when I run it (with args) I get: > > 591 > ./cat.py cat.py > File "./cat.py", line 6 > with open(sys.argv[nn]) as f: > ^ > SyntaxError: invalid syntax > 592 > > > This example came from http://docs.python.org/tut/node10.html down in > section 8.7 > > Am I missing something?
The with-statement only works in Python 2.5, and you have to enable it explicitly: >>> from __future__ import with_statement >>> with open("tmp.txt") as f: ... print len(f.read()) ... 15 >>> f.read() Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: I/O operation on closed file Peter -- http://mail.python.org/mailman/listinfo/python-list