Connecting Tech Pros Worldwide Help | Site Map

Question about using "with"

Steven W. Orr
Guest
 
Posts: n/a
#1: Jan 9 '07
>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?

TIA

--
Time flies like the wind. Fruit flies like a banana. Stranger things have .0.
happened but none stranger than this. Does your driver's license say Organ ..0
Donor?Black holes are where God divided by zero. Listen to me! We are all- 000
individuals! What if this weren't a hypothetical question?
steveo at syslang.net
Steven Bethard
Guest
 
Posts: n/a
#2: Jan 9 '07

re: Question about using "with"


Steven W. Orr wrote:
Quote:
Quote:
>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::
Quote:
Quote:
Quote:
>>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
Quote:
Quote:
Quote:
>>from __future__ import with_statement
>>with open('temp.txt', 'w') as f:
.... f.write('hello')
....

STeVe
Peter Otten
Guest
 
Posts: n/a
#3: Jan 9 '07

re: Question about using "with"


Steven W. Orr wrote:
Quote:
Quote:
>>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:
Quote:
Quote:
Quote:
>>from __future__ import with_statement
>>with open("tmp.txt") as f:
.... print len(f.read())
....
15
Quote:
Quote:
Quote:
>>f.read()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: I/O operation on closed file

Peter
Closed Thread