Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 5, 2012 11:05:20

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

как закрыть открытое изображение?

такой код

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'
я так думаю что я открыл файл, и не закрыл. а как его закрыть?

спасибо

Офлайн

#2 Янв. 5, 2012 11:41:31

Piton23
От:
Зарегистрирован: 2011-10-17
Сообщения: 139
Репутация: +  5  -
Профиль   Отправить e-mail  

как закрыть открытое изображение?

хм, а зачем открывать файл перед его удалением?, к чему строка 7? или это часть кода? Ошибка в том что файло используется и не может удалится

И вообще какая цель?

Офлайн

#3 Янв. 5, 2012 11:46:16

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

как закрыть открытое изображение?

это просто кусок/выдержка из кода.

строка 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)

Офлайн

#4 Янв. 5, 2012 15:44:27

cutwater
От:
Зарегистрирован: 2009-01-08
Сообщения: 444
Репутация: +  19  -
Профиль   Отправить e-mail  

как закрыть открытое изображение?

А всего-то надо спросить google.

http://bytes.com/topic/python/answers/24308-pil-do-i-need-close



Офлайн

#5 Янв. 6, 2012 04:37:20

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

как закрыть открытое изображение?

cutwater
спасибо

fp = open(filename, "rb")
im = Image.open(fp) # open from file object
im.load() # make sure PIL has read the data
fp.close()
получается что два раза открывается файл? или как.
я думал что у PIL есть своя функция закрытия файла. поэтому и спращивал.

Офлайн

#6 Янв. 6, 2012 10:28:34

cutwater
От:
Зарегистрирован: 2009-01-08
Сообщения: 444
Репутация: +  19  -
Профиль   Отправить e-mail  

как закрыть открытое изображение?

Для тех кто упорно не хочет думать головой и читать документацию и комментарии по ссылке.

PIL работает с объектами изображений, не файлами. Он автоматически закрывает файл, когда в нем более нет необходимости.
Если Вы не доверяете PIL используйте следующее.
В данном примере Вы открываете файл вручную, передаете в open уже объект file и Image с ним работает (для особо одаренных: второй раз файл не открывается)
Соответственно load позволяет удостовериться в том что изображение было загружено в память и файл после этого можно закрыть.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version