tags:

views:

103

answers:

2

How do i use the with statement in this case?

f_spam = open(spam,'r')
f_bar = open(eggs,'r')
...
do something with these files
...
f_spam.close()
f_bar.close()

Files number could be greater than two.

+2  A: 
with open(spam,'r') as f_spam:
  with open(eggs,'r') as f_bar:
    #do stuff with each
Bryan Ross
+6  A: 

You can also do:

from contextlib import nested

with nested(open(spam), open(eggs)) as (f_spam, f_eggs):
    # do something

In python 3.1 you don't need the nested function because with supports the following syntax:

with open(spam) as f_spam, open(eggs) as f_eggs:
    # do something
blokeley
how would u do it in Python 3?
Tshepang
`with open(spam) as f_spam, open(eggs) as f_eggs:`..................See the fourth bullet point down at http://docs.python.org/release/3.1/whatsnew/3.1.html#other-language-changes
blokeley