в формате .jpeg и сохраняю их в базу.
Бывает что фотка скачивается битая её размер в 10 раз меньше, там ошибка.
Вот последняя версия как я пытаюсь избежать исключение, я правильно делаю?
def save_images(listing):
i = 0
for i in range(len(listing.Media)):
try:
f = open(f"{MEDIA_DIR}/download_images/img_{i}.jpeg", 'rb')
except UnidentifiedImageError:
logger.error(f"Exception: for {listing.ListingId}, (broken img)")
f = open(f"{STATIC_ROOT}main/img/other/nocard.webp", 'rb')
finally:
photo = Photo(image=File(f), listing=listing)
photo.save()
Этот open разве PIL'овский? Билтин не выкинет такой эксепшн
Исключение из библиотеки PIL. см в трейсбеке предпоследню юстроку
так… ты пытаешься сохранить картинку в файл открытый на чтение?
так я сохранил в цикле первые 3 файлы img_0 img_1 img_2 img_3 они не чем не отличаются от img_4
Файл бы за собой закрывать не забывать. Ну и в целом логика немного вывернутая вышла.
Ну и да — затенять стандартный open — к путанице.
Так лови исключение из библиотеки, зачем ты его ловишь на билтиновском open?
Pillow'ский open кидает ValueError, если mode != 'r'
При чём тут это?
У него стандартный open там, иначе исключение вылезло раньше
Хотя фиг знает, то там вообще просходит. Может и так.
Ну, раз на photo.save ошибка, поставь эксепт там
я уже сделал это def save_images(listing): i = 0 for i in range(len(listing.Media)): try: f = open(f"{MEDIA_DIR}/download_images/img_{i}.jpeg", 'rb') photo = Photo(image=File(f), listing=listing) photo.save() except UnidentifiedImageError(): logger.error(f"Exception: for {listing.ListingId}, (broken img)") f = open(f"{STATIC_ROOT}main/img/other/nocard.webp", 'rb') photo = Photo(image=File(f), listing=listing) photo.save()
Обсуждают сегодня