Открытие файлов из каталога и сохранение имени и содержимого файла

Я хотел бы прочитать все файлы из каталога и импортировать имя файла и содержимое в список. Я написал следующий код, но он импортирует только последний файл в каталоге.

import os

fileList = []

for dirname, dirnames, filenames in os.walk('.'):
    for filename in filenames:
        file = os.path.join(dirname, filename)
    f = open(file, 'r')
    contents = f.read()
    newItem = (file, contents)
    fileList.append(newItem)


print(fileList)

person user2175943    schedule 14.04.2017    source источник
comment
Если вам интересно, что вы не получили ответ на этот довольно простой вопрос раньше: тег python-3.6 следует использовать для вопросов, специфичных для Python версии 3.6. Поскольку для этого вопроса не требуется определенная версия Python, вы можете добавить тег python. За вопросами с пометкой python следит гораздо больше людей, чем с python-3.6   -  person Felix    schedule 17.04.2017


Ответы (1)


Кажется, проблема с отступом. Попробуй это:

import os

fileList = []

for dirname, dirnames, filenames in os.walk('.'):
    for filename in filenames:
        file = os.path.join(dirname, filename)
        f = open(file, 'r')
        contents = f.read()
        newItem = (file, contents)
        fileList.append(newItem)

print(fileList)

Кроме того, вы не закрываете файлы в своей программе, что не является хорошим стилем. Лучше использовать так называемый контекстный менеджер, который обрабатывает открытие и закрытие файла:

import os

fileList = []

for dirname, dirnames, filenames in os.walk('.'):
    for filename in filenames:
        file = os.path.join(dirname, filename)
        with open(file, 'r') as f:
            contents = f.read()
            newItem = (file, contents)
            fileList.append(newItem)

print(fileList)
person Felix    schedule 16.04.2017