Get_images: проверка каталога и суффиксов через pathlib

В коде неверны проверка каталога, имя directory и условие расширений: выражение с != и or истинно для любого файла. Используйте pathlib, is_file() и проверку суффикса через in.

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

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

В коде неверны проверка каталога, имя directory и условие расширений: выражение с != и or истинно для любого файла. Используйте pathlib, is_file() и проверку суффикса через in.

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

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

Условие

def get_images(input_dir: str) -> list[str]: if not os.is_dir(): print("not directory")

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 истинно для любого файла. Используйте pathlib, is_file() и проверку суффикса через in.

Исправленный вариант для непосредственных файлов каталога:

from pathlib import Path

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

Расширение не доказывает, что содержимое является изображением; при внешнем вводе нужна проверка декодером и ограничения размера. Порядок iterdir не гарантирован, для стабильного результата добавляют сортировку.

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

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

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

Подробнее