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