Палочка Python создает огромные временные файлы

Что не так с моим ошибочным кодом? Wand создает временные файлы, а не удаляет их. Я пробовал os.remove, но потом получаю ошибку WindowsError: [Ошибка 32].

Что случилось?

name = "testname"
fullFilename = "test" + "/" + str(name) + ".png"
with Image(file=url, resolution=400) as image:
    images=image.sequence
    for i in range(len(images)):
        Image(images[i]).save(filename=fullFilename)
        with Image(filename=fullFilename, resolution=300) as img:
                    img.compression_quality = 99
                    img.type = 'grayscale'
                    img.save(filename=fullFilename)
            with open(fullFilename, "rb") as imageFile:
                tiffData = imageFile.read()
                infoArray = ["2017","777","NO",tiffData,"OK",id]
                saveToDatabase(infoArray)

person mattias77    schedule 11.12.2018    source источник
comment
Спасибо за ответ. Я скучаю, когда копирую код в stackoverflow :(. У меня есть изменения   -  person mattias77    schedule 11.12.2018
comment
не уверен, что делает ваш saveToDatabase(), но у меня сложилось впечатление, что сохранение больших объектов в реляционных базах данных обычно не рекомендуется...   -  person Sam Mason    schedule 11.12.2018
comment
Спасибо, Сэм. Я знаю, что сохранение изображения в базе данных — это не бог. Я все еще учусь :). Цель состоит в том, чтобы извлечь разные файлы PDF в один png или tiff. Затем сделайте распознавание каждого изображения, а затем удалите страницы с неправильным текстом. Затем создайте новый мульти pdf из ключевых слов с пройденных страниц.   -  person mattias77    schedule 11.12.2018


Ответы (1)


Что не так с моим ошибочным кодом?

Похоже, вы выполняете много операций ввода-вывода. Попробуйте сократить код до чего-то минимального и полного.

with Image(file=url, resolution=400) as image:
    for page_src in image.sequence:
        with Image(page_src) as page_dst:
            page_dst.compression_quality = 99
            page_dst.type = 'grayscale'
            tiffData = page_dst.make_blob('TIFF')
            infoArray = ["2017","777","NO",tiffData,"OK",id]
            saveToDatabase(infoArray)

Wand создает временные файлы, а не удаляет их. Я пробовал os.remove, но потом получаю ошибку WindowsError: [Ошибка 32].

Похоже, что к файлам обращается другая программа. Попробуйте удалить их после того, как python выполнит чистое завершение работы, и у ImageMagick будет время запустить процедуру завершения.

person emcconville    schedule 11.12.2018