170 похожих чатов

Django. Меня эта ошибка достала я качаю фотки в цикле

в формате .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()

14 ответов

10 просмотров

Этот open разве PIL'овский? Билтин не выкинет такой эксепшн

Gregory- Автор вопроса
Jack Bolt
Этот open разве PIL'овский? Билтин не выкинет тако...

Исключение из библиотеки PIL. см в трейсбеке предпоследню юстроку

так… ты пытаешься сохранить картинку в файл открытый на чтение?

Gregory- Автор вопроса
Алиса Королёва
так… ты пытаешься сохранить картинку в файл открыт...

так я сохранил в цикле первые 3 файлы img_0 img_1 img_2 img_3 они не чем не отличаются от img_4

Файл бы за собой закрывать не забывать. Ну и в целом логика немного вывернутая вышла.

Ну и да — затенять стандартный open — к путанице.

Gregory
Исключение из библиотеки PIL. см в трейсбеке пред...

Так лови исключение из библиотеки, зачем ты его ловишь на билтиновском open?

evle
Ну и да — затенять стандартный open — к путанице.

Pillow'ский open кидает ValueError, если mode != 'r'

evle
При чём тут это?

У него стандартный open там, иначе исключение вылезло раньше

Jack Bolt
У него стандартный open там, иначе исключение выле...

Хотя фиг знает, то там вообще просходит. Может и так.

Gregory
Как?

Ну, раз на photo.save ошибка, поставь эксепт там

Gregory- Автор вопроса
Jack Bolt
Ну, раз на 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()

Похожие вопросы

Обсуждают сегодня

А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Добрый день подскажите пожалуйста может кто то сталкивался с ошибками Sentry 22.10.0 развернутым из helm чарт в Kubernetes? Изначально 3 дня назад очень стало много событий ух...
Tire4 Finist Devops
1
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
почому оно не работает?
Vi Chapmann Chapmann
19
всем привет почти закончил курс После него можно писать свою операционку? Какие библиотеки надо использовать и куда дальше копать для изучения
Linus
19
Так а кто может спарсить всех участников чата? Идишники
Magic
18
Карта сайта