Get_images: неопределённое directory и проверка расширений

В коде используется неопределённое directory, а условие с or всегда отклоняет файл. Проверяйте расширение через suffix и отдельно убеждайтесь, что путь указывает на файл.

Короткий ответ

Что ответить на собеседовании

В коде используется неопределённое directory, а условие с or всегда отклоняет файл. Проверяйте расширение через suffix и отдельно убеждайтесь, что путь указывает на файл.

Подробный разбор

Ответ с пояснениями

Условие

def get_images(input_dir: str) -> list[str]: images = [] for image_fn in os.listdir(directory): image_path = input_dir + "/" + image_fn if image_path[-4:] != ".jpg" or image_path[-4:] != ".png": print(f"{image_path} is not an image") continue images.append(image_path) return images

Ответ

В коде используется неопределённое directory, а условие с or всегда отклоняет файл. Проверяйте расширение через suffix и отдельно убеждайтесь, что путь указывает на файл.

from pathlib import Path

def get_images(input_dir: str) -> list[str]:
    return sorted(
        str(path)
        for path in Path(input_dir).iterdir()
        if path.is_file() and path.suffix.lower() in {'.jpg', '.png'}
    )

Файл не может одновременно иметь оба расширения, поэтому выражение != '.jpg' or != '.png' всегда истинно. Исправление использует множество разрешённых расширений и корректно собирает пути. Это только фильтр имён: он не доказывает, что содержимое действительно изображение. Ошибки доступа и отсутствующий каталог здесь передаются вызывающему коду.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее