Форум сайта python.su
2
Приветствую форумчан.
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'
Офлайн
857
Попробуй перед os.remove() вставить im.close() .
Офлайн
2
py.user.nextТа же ошибка доступа.
Попробуй перед os.remove() вставить im.close() .
Офлайн
72
А не может его какая-нибудь индексация файлов держать? Что FileMon показывает? Какой процесс держит?
Офлайн
2
Спасибо всем за комментарии. Нашел решение, но причину так и не понял.
Для того чтобы исходная картинка удалялась надо перед 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)
Отредактировано PyNovice (Сен. 19, 2014 19:44:01)
Офлайн
857
Скорее всего, дело в сырости PIL для третьего питона. Выпускают её, работающей наполовину. Походу, тестов не писали, поэтому и не знают о таких мелочах.
Отредактировано py.user.next (Сен. 20, 2014 00:01:55)
Офлайн