Я осознавая, что я могу открыть несколько файлов, например,
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
?