Удалите все PDF-файлы в папке с помощью python

#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 существует в моей папке?