@sazhyk

Что должна вернуть функция?

Есть маленькая функция
Функция
import os

current_dir = os.getcwd()

def my_list(path):
    for dirname, dirnames, filenames in os.walk(path):
        filenames = filter(lambda x: x.endswith('.html'), filenames)
        for filename in filenames:
            file = os.path.join(dirname, filename)
            # где-то тут return

print(my_list(current_dir))
Она должна вернуть отфильтрованный список файлов типа *.html с полными путями.
Сейчас она возвращает только первый найденный путь. Хотя если это оформить без функции
типа так
import os

current_dir = os.getcwd()
for dirname, dirnames, filenames in os.walk(current_dir):
    filenames = list(filter(lambda x: x.endswith('.html'), filenames))
    for filename in filenames:
        file = os.path.join(dirname, filename)
        print(file)
То получаю отфильтрованный список всех найденных файлов.
  • Вопрос задан
  • 316 просмотров
Решения вопроса 2
@Firik67
Middle PHP Developer
return прерывает выполнение функции, а print нет. Поэтому нужно сначала, вместо return, складывать все нужные значения в массив, а затем уже возвращать сам массив.
Что то вроде этого:
def my_list(path):
    filePaths = []
    for dirname, dirnames, filenames in os.walk(path):
        filenames = filter(lambda x: x.endswith('.html'), filenames)
        for filename in filenames:
            file = os.path.join(dirname, filename)
            filePaths.append(file)
    return filePaths
Ответ написан
@gill-sama
потому что найдя 1ый файл она вываливается из функции на return. Вам надо аккумулировать все файлы и вернуть список
def my_list(path):
    result = []
    for dirname, dirnames, filenames in os.walk(path):
        filenames = filter(lambda x: x.endswith('.html'), filenames)
        for filename in filenames:
            file = os.path.join(dirname, filename)
            result.append(file)
    return result

допустим так
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
# где-то тут return

ну что-то тут и возвращается.

Приведите, пожалуйста, весь код функции
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы