Подтвердить что ты не робот

Множественный оператор `with` в языке Python 2.6

Мне нравится удобство оператора множественного контекста with в Python 2.7:

with open('a.txt') as a, open('b.txt') as b:
   do_many_amazing_things(a, b)

Однако мне нужно поддерживать совместимость с 2.6.

with был перенесен на 2.5 через __future__, но я не могу найти ничего о том, что версия множественного контекста была перенесена обратно в 2.6 в документации.

Есть ли что-то, что я пропустил?

EDIT: Я знаю, что можно вложить выражения with. Я спрашиваю, можно ли использовать несколько с операторами.

4b9b3361

Ответ 1

Если не существует эквивалента обратной совместимости, я бы справился с этим, сделав оператор multiple-context with набором одноконтекстных, вложенных операторов with.

with open('a.txt') as a: 
    with open('b.txt') as b:
        do_many_amazing_things(a, b)

РЕДАКТИРОВАТЬ адрес вашего редактирования:

Если вы настаиваете на том, чтобы не вставлять дополнительные инструкции with, вы всегда можете использовать contextlib

import contextlib
with contextlib.nested(open("a.txt"), open("b.txt")) as (a, b):
    do_many_amazing_things(a,b)

Что касается использования нескольких операторов with из импортируемого в будущем with, это невозможно, насколько я знаю