首页 > 解决方案 > 如何关闭使用 pdfquery 打开的文件,它阻止了 pdf 文件?

问题描述

我尝试重命名使用 pdfquery 打开的 pdf 文件,从数据中提取 pdf 文件的名称。pdfquery 锁定文件并防止重命名。没有关闭方法来解锁文件。

我尝试“删除 pdf”并在重命名之前强制关闭文件,但它不起作用。(在windows上试过,不知道linux是否有效)

import os
import pdfquery


def is_pdf(file):
    if os.path.splitext(file.lower())[1] == '.pdf':
        return True


pdf_files = os.listdir('./pages')
for pdf_file in filter(is_pdf, pdf_files):
    if is_pdf(pdf_file):
        print(pdf_file)
        pdf = pdfquery.PDFQuery(os.path.join('pages', pdf_file))
        pdf.load()
        for e in pdf.tree.iter():
            text = e.text
            if text:
                text = text.replace(' ', '')
                if text[0:7] == '4002629':
                    #del pdf
                    os.rename(os.path.join('pages', pdf_file), '{}.pdf'.format(text))

期望重命名的文件,但得到:

Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\PDFs_aufbereiten\pdf_pages_rename.py", line 22, in <module>
    os.rename(os.path.join('pages', pdf_file), '{}.pdf'.format(text))
PermissionError: [WinError 32] Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird: 'pages\\xxxxxxxxxxxxxxxxxxxx.pdf' -> 'xxxxxxxxxxxxx.pdf'

标签: pythonpdf

解决方案


这也应该有效:

pdf.file.close()

推荐阅读