У меня есть скрипт, который запускает весь каталог и извлекает каждый PDF-файл, извлекает текст и находит ключевые слова в каждом PDF-файле. Кажется, что он отлично работает с несколькими PDF-файлами, но всякий раз, когда он сталкивается с PDF-файлом с какой-либо проблемой, сценарий ломается.
Я реализовал блок try and кроме функции, чтобы избежать этих проблем, но, похоже, он не работает, поскольку скрипт просто работает постоянно. Я новичок во всем этом, особенно с использованием try и кроме блоков. Как исправить мой скрипт, чтобы использовать try и кроме блоков, чтобы скрипт обрабатывал только хорошие PDF и игнорировал все плохие, не нарушая сценарий?
p = Path("C:/Users/Hugo Caldeira/Desktop")
inp = r"((?<=|^)[0-9]{3}-[0-9]{2}-[0-9]{4}(?=|$))"
file_dict = {
"name": [],
"created": [],
"modified":[],
'path':[],
'content':[],
'keyword':[]
}
files = list(p.rglob('*pdf'))
def pdfparser(file):
fp = open(file, 'rb')
rsrcmgr = PDFResourceManager()
retstr = io.StringIO()
codec = 'utf-8'
laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
#Create a PDF interpreter object.
interpreter = PDFPageInterpreter(rsrcmgr, device)
#Process each page contained in the document.
for page in PDFPage.get_pages(fp):
interpreter.process_page(page)
data = retstr.getvalue()
return(data)
def pdfs(files):
for name in files:
while True:
try:
IP_list = (pdfparser(name))
except (RuntimeError, TypeError, NameError):
print('got error')
keyword = re.findall(inp,IP_list)
#print(ip_test)
file_dict['keyword'].append(keyword)
file_dict['name'].append(name.name[0:])
file_dict['created'].append(time.ctime(name.stat().st_ctime))
file_dict['modified'].append(time.ctime(name.stat().st_mtime))
file_dict['path'].append(name)
file_dict["content"].append(IP_list)
#print(file_dict)
return(file_dict)
pdfs(files)
print(pdfparser(p))
def to_xlsx():
df = pd.DataFrame.from_dict(file_dict)
df.head()
df.to_excel("pdftest.xlsx")
if __name__ == "__main__":
to_xlsx()