Найти - Пользователи
Полная версия: Pillow проблема с GIF
Начало » Python для новичков » Pillow проблема с GIF
1
PyNovice
Приветствую форумчан.
python 3.4.1
отказывается работать os.remove в коде
from PIL import Image
import os
file = 'D:\\SCRIPTTEST\\12.gif'
im = Image.open(file)
nim = Image.new('RGB', (width,height), (255,255,255))
nim.paste(im)
nim.save('12.jpg', subsampling=0, quality = 100)
os.remove(file)

выдает
File "D:\SCRIPTTEST\test.py", line 8, in <module>
builtins.PermissionError: [WinError 32] Процесс не может получить доступ к файлу, так как этот файл занят другим процессом: 'D:\\SCRIPTTEST\\12.gif'

С png и jpg этот код работает нормально, исходник удаляется.
Уже всю голову сломал.
py.user.next
Попробуй перед os.remove() вставить im.close() .
PyNovice
py.user.next
Попробуй перед os.remove() вставить im.close() .
Та же ошибка доступа.
Кстати пробовал на 2 разных компах, все то же самое. Т.о. проблему с системой можно исключить. Меня смущает что если бы проблема носила массовый характер то можно было бы найти подобное в интернете, да вот ничего похожего нигде не нашел. Отсюда и решил что что-то делаю не то.
PooH
А не может его какая-нибудь индексация файлов держать? Что FileMon показывает? Какой процесс держит?
PyNovice
Спасибо всем за комментарии. Нашел решение, но причину так и не понял.
Для того чтобы исходная картинка удалялась надо перед os.remove добавить del im
from PIL import Image
import os
file = 'D:\\SCRIPTTEST\\12.gif'
im = Image.open(file)
nim = Image.new('RGB', (width,height), (255,255,255))
nim.paste(im)
nim.save('12.jpg', subsampling=0, quality = 100)
del im
os.remove(file)
py.user.next
Скорее всего, дело в сырости PIL для третьего питона. Выпускают её, работающей наполовину. Походу, тестов не писали, поэтому и не знают о таких мелочах.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB