Открытие более 1 файла с помощью - python

Обычно мы будем использовать это для чтения/записи файла:

with open(infile,'r') as fin:
  pass
with open(outfile,'w') as fout:
  pass

И чтобы читать один файл и выводить его на другой, могу ли я сделать это только с одним with?

Я делал это как таковое:

with open(outfile,'w') as fout:
  with open(infile,'r') as fin:
    fout.write(fin.read())

Есть ли что-то вроде следующего (следующий код не работает):

with open(infile,'r'), open(outfile,'w') as fin, fout:
  fout.write(fin.read())

Есть ли какая-либо польза от использования одного with, а не нескольких with? есть ли там PEP, где это обсуждается?

Ответ 2

Вы можете попробовать написать свой собственный класс и использовать его с синтаксисом with

class open_2(object):
    def __init__(self, file_1, file_2):
        self.fp1 = None
        self.fp2 = None
        self.file_1 = file_1
        self.file_2 = file_2

    def __enter__(self):
        self.fp1 = open(self.file_1[0], self.file_1[1])
        self.fp2 = open(self.file_2[0], self.file_2[1])
        return self.fp1, self.fp2

    def __exit__(self, type, value, traceback):
        self.fp1.close()
        self.fp2.close()

with open_2(('a.txt', 'w'), ('b.txt', 'w')) as fp:
    file1, file2 = fp

    file1.write('aaaa')
    file2.write('bbb')