Невозможно переместить / удалить PDF после обработки с помощью pdfrw - PullRequest
0 голосов
/ 22 апреля 2020

Я обновил вопрос, чтобы он содержал большую часть кода, так как я чувствую, что некоторые из них могут блокировать друг друга ... Это можно проверить, просто добавив один или два файла PDF в ваш c: папка \ temp (на windows). Я только начал с Python, поэтому, может быть, отсутствуют базовые c вещи ...

import glob
from datetime import datetime
from pathlib import Path
import PyPDF4
from pdfrw import PdfReader, PdfWriter


def safe_open_pdf(pdf):
    pdf_reader = None
    result = True

    file = open(pdf, 'rb')
    try:
        pdf_reader = PyPDF4.PdfFileReader(file)
        result = True
    except:
        # some older PDF files on my disk raise a missing EOF error, which cannot be handled by PyPDF4
        print(pdf.split('\\')[-1] + " needs to be fixed")
        result = False

    if not result:
        # if file had EOF error, I "rebuild" it with PdfReader and PdfWriter
        x = PdfReader(pdf)
        y = PdfWriter()
        y.addpages(x.pages)
        y.write(pdf)
        pdf_reader = PyPDF4.PdfFileReader(file)

    return pdf_reader


def move_processed_pdf(source_file):
    Path(new_path).mkdir(parents=True, exist_ok=True)

    print("Copying to " + new_path + new_file)

    f = open(PDFFile, 'rb')
    x = PdfReader(f)
    y = PdfWriter()
    y.addpages(x.pages)
    y.write(new_path + new_file)

    f.close()
    # time.sleep(5)
    Path(PDFFile).unlink()


if __name__ == '__main__':

    relevant_path = 'C:\\temp\\'
    file_count = 0
    new_path = 'C:\\temp\\processed\\'

    for PDFFile in glob.iglob(relevant_path + '*.pdf', recursive=True):

        new_file = datetime.today().strftime('%Y-%m-%d') + PDFFile.split('\\')[-1]

        print('Processing File: ' + PDFFile.split('\\')[-1])

        pdfReader = safe_open_pdf(PDFFile)
        file_count += 1
        num_pages = pdfReader.numPages

        print(num_pages)

        page_count = 0
        text = ''

        while page_count < num_pages:
            pageObj = pdfReader.getPage(page_count)
            page_count += 1
            text += pageObj.extractText()

        # Main processing occurs here

        move_processed_pdf(PDFFile)

, проблема, которую я получаю, состоит в том, что PermissionError: [WinError 32] The process cannot access the file because it is being used by another process.

папки и файлы существуют.

есть идеи?

...