Question about using "with"
Peter Otten
__peter__ at web.de
Tue Jan 9 13:42:05 EST 2007
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
More information about the Python-list
mailing list