Question about using "with"

Steven Bethard steven.bethard at gmail.com
Tue Jan 9 13:39:59 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?

You need to enable the with statement using a __future__ import::

 >>> with open('temp.txt', 'w') as f:
<stdin>:1: Warning: 'with' will become a reserved keyword in Python 2.6
   File "<stdin>", line 1
     with open('temp.txt', 'w') as f:
             ^
SyntaxError: invalid syntax
 >>> from __future__ import with_statement
 >>> with open('temp.txt', 'w') as f:
...     f.write('hello')
...

STeVe



More information about the Python-list mailing list