Надеюсь, я правильно сформулировал вопрос. Я пытаюсь заставить себя быть лучшим программистом. К лучшему я имею в виду эффективный. Я хочу написать программу для идентификации файлов в каталоге и прочитать каждый файл для дальнейшей обработки. Через какое-то шарканье я получил это:Как узнать, когда управлять ресурсами в Python
for file in os.listdir(dir):
y=open(dir+'\\'+file,'r').readlines()
for line in y:
pass
y.close()
Это не должно быть сюрпризом, что я получаю AttributeError поскольку у есть список. Я не думал об этом, когда писал фрагмент.
Я думал об этом, и я боюсь, что у меня есть пять открытых файлов (есть пять файлов в директории, указанной директории.
я могу исправить код, чтобы он работает, и я явно закрывать файлы после открытия . они мне интересно, если мне нужно или Python обрабатывает закрытие файла в следующей итерации цикла Если это так, то мне нужно только написать:.
for file in os.listdir(dir):
y=open(dir+'\\'+file,'r').readlines()
for line in y:
pass
Я предполагаю, что это (питон) не обрабатывать это легко. Причина, по которой я думаю, что это может быть обработано, заключается в том, что я изменил объект/вещь, на которую ссылается y. Когда я запускаю вторую итерацию t здесь больше нет ссылок на файлы, которые были открыты и прочитаны с помощью метода readlines.
Я должен что-то отсутствует, но это сюрприз для меня, что вы получите AttributeError, если у есть список. –
OP ссылается на строку 'y.close()', я считаю. –
Вы не можете закрыть список y - это список с методом readlines(). Надеюсь, что метод - это правильное имя для строк readlines. – PyNEwbie