Поскольку PIL ожидает файловый объект, я пытаюсь использовать tempfile для создания файла.Я сталкиваюсь с проблемами буфера - PullRequest
0 голосов
/ 23 января 2012

Я пытаюсь создать временный файл из записи в моей базе данных. Я сделал print(filedata['data']) и вижу, что данные извлекаются правильно, но даже с temp_h.flush() я никогда не вижу данных, сохраненных в файл. Когда я иду, чтобы получить его, файл пуст. Может кто-нибудь объяснить мне, что является причиной этого, и если есть лучший способ сделать то, что я пытаюсь сделать с PIL, я бы тоже хотел узнать это. Я запускаю это в системе Linux с файловой системой EXT3

def main():
    '''Main'''

    for nohisto in thestash.stash.get_files():
       fileid = str(nohisto['_id'])
       filedata = openstash(fileid)
       temp_h = tempfile.TemporaryFile(mode='r+')
       temp_h.write(filedata['data'])
       temp_h.flush()
       time.sleep(3)
       myhisto = Image.open(temp_h).histogram()

1 Ответ

4 голосов
/ 23 января 2012

Попробуйте mode='w+', затем после записи, seek(0), чтобы вернуть указатель ввода-вывода в начало файла. Вы также можете создавать файловые объекты в памяти с помощью модуля StringIO.

...