Я пытаюсь переименовать pdf-файлы, открытые с помощью pdfquery, извлекая из файла имя pdf-файла.pdfquery блокирует файл и предотвращает переименование.Не существует метода close для разблокировки файла.
Я попытался «del 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'