Форум сайта python.su
22
такой код
from PIL import Image
from PIL.ExifTags import TAGS
import os
PATH=os.getcwd()
i = Image.open(PATH+'\\1_horses.jpg')
os.remove(PATH+'\\1_horses.jpg')
Traceback (most recent call last):
File "D:\Ильнур\Мои документы\Desktop\фото\1.py", line 8, in <module>
os.remove(PATH+'\\1_horses.jpg')
WindowsError: [Error 32] Процесс не может получить доступ к файлу,: 'D:\\\xc8\xeb\xfc\xed\xf3\xf0\\\xcc\xee\xe8 \xe4\xee\xea\xf3\xec\xe5\xed\xf2\xfb\\Desktop\\\xf4\xee\xf2\xee\\1_horses.jpg'
Офлайн
5
хм, а зачем открывать файл перед его удалением?, к чему строка 7? или это часть кода? Ошибка в том что файло используется и не может удалится
И вообще какая цель?
Офлайн
22
это просто кусок/выдержка из кода.
строка 7 нужна для последующей работы.
я понимаю что файл открыт и используется. как его закрыть?
а если удалить переменную перед удалением файла?
сейчас попробую
мне вообще интересно. при обычном открытии файла я могу закрыть файл. а когда через модуль PIL? не нашёл инфы просто по этому
P.S. вот так работает без ошибок. но правильно ли так делать?
from PIL import Image
from PIL.ExifTags import TAGS
import os
PATH=os.getcwd()
i = Image.open(PATH+'\\1_horses.jpg')
del(i)
os.remove(PATH+'\\1_horses.jpg')
Отредактировано (Янв. 5, 2012 11:53:22)
Офлайн
19
А всего-то надо спросить google.
http://bytes.com/topic/python/answers/24308-pil-do-i-need-close
Офлайн
22
cutwater
спасибо
fp = open(filename, "rb")
im = Image.open(fp) # open from file object
im.load() # make sure PIL has read the data
fp.close()
Офлайн
19
Для тех кто упорно не хочет думать головой и читать документацию и комментарии по ссылке.
PIL работает с объектами изображений, не файлами. Он автоматически закрывает файл, когда в нем более нет необходимости.В данном примере Вы открываете файл вручную, передаете в open уже объект file и Image с ним работает (для особо одаренных: второй раз файл не открывается)
Если Вы не доверяете PIL используйте следующее.
Офлайн