#python #pdf #removeall
Вопрос:
Я пытаюсь преобразовать все pdf-файлы в файлы .jpg, а затем удалить их из каталога. Я могу конвертировать все PDF-файлы в jpg, но когда я пытаюсь их удалить, я получаю сообщение об ошибке «Процесс используется другим человеком».
Не могли бы вы, пожалуйста, помочь мне?
Ниже приведен код
Приведенный ниже скрипт преобразует все PDF-файлы в jpeg и хранит в одном и том же месте.
for fn in files:
doc = fitz.open(pdffile)
page = doc.loadPage(0) # number of page
pix = page.getPixmap()
fn1 = fn.replace('.pdf', '.jpg')
output = fn1
pix.writePNG(output)
os.remove(fn) # one file at a time.
path = 'D:/python_ml/Machine Learning/New folder/Invoice/'
i = 0
for file in os.listdir(path):
path_to_zip_file = os.path.join(path, folder)
if file.endswith('.pdf'):
os.remove(file)
i = 1
Ответ №1:
Как отметил @K J в своем комментарии, скорее всего, проблема в том, что файлы не закрываются, и действительно, ваш код пропускает закрытие doc
объекта(объектов).
(Судя по строке fitz.open(pdffile)
, я предполагаю, что вы используете библиотеку pymupdf.)
doc = fitz.open(pdffile)
page = doc.loadPage(0) # number of page
pix = page.getPixmap()
fn1 = fn.replace('.pdf', '.jpg')
output = fn1
pix.writePNG(output)
…следует скорректировать, например, следующим образом:
with fitz.open(pdffile) as doc:
page = doc.loadPage(0) # number of page
pix = page.getPixmap()
output = fn.replace('.pdf', '.jpg')
pix.writePNG(output)
(Примечание сбоку: fn1
переменная кажется совершенно избыточной, поэтому я избавился от нее. Кроме того, не следует ли pdffile
заменить на fn
? Что pdffile
на самом деле есть?)
Комментарии:
1. Привет @Zuo,Спасибо за ответ, это было очень полезно, файл pdffile-моя ошибка, и он должен быть fn. Не могли бы вы помочь мне добавить логику, в которой этот код должен выполняться только в том случае, если файл .pdf существует в моей папке?