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