В коде используется неопределённое directory, а условие с or всегда отклоняет файл. Проверяйте расширение через suffix и отдельно убеждайтесь, что путь указывает на файл.
Get_images: неопределённое directory и проверка расширений
В коде используется неопределённое 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' всегда истинно. Исправление использует множество разрешённых расширений и корректно собирает пути. Это только фильтр имён: он не доказывает, что содержимое действительно изображение. Ошибки доступа и отсутствующий каталог здесь передаются вызывающему коду.