Я знаю, что я могу открыть несколько файлов с чем-то вроде
with open('a', 'rb') as a, open('b', 'rb') as b:
Но у меня есть ситуация, когда у меня есть список файлов для открытия, и мне интересно, что предпочтительный метод делает то же самое, когда количество файлов неизвестно заранее. Что-то вроде,
with [ open(f, 'rb') for f in files ] as fs:
(но это не удается с AttributeError
, поскольку список не реализует __exit__
)
Я не против использовать что-то вроде
try:
fs = [ open(f, 'rb') for f in files ]
....
finally:
for f in fs:
f.close()
Но я не уверен, что произойдет, если некоторые файлы бросят при попытке их открыть. Будет ли fs
правильно определено, с файлами, которые удалось открыть, в блоке finally
?