Python PDF 转 TXT 异常处理:解决无法读取 PDF 文件问题
Python PDF 转 TXT 异常处理:解决无法读取 PDF 文件问题
在使用 Python 的 PyPDF2 库将 PDF 文件转换为 TXT 文件时,可能会遇到某些 PDF 文件无法被正确读取的问题,导致程序中断,只转换了部分文件。本文将介绍如何通过添加异常处理机制来解决这个问题,确保所有 PDF 文件都能被成功转换为 TXT 文件。
原始代码:
import os
import PyPDF2
pdf_folder = r'D:\南巢\第六学期\大数据与会计分析\贵州茅台财务分析\年报'
# 获取所有pdf文件的路径
pdf_files = [os.path.join(pdf_folder, f) for f in os.listdir(pdf_folder) if f.endswith('.pdf')]
# 遍历每个pdf文件,将其转化为txt文件
for pdf_file in pdf_files:
with open(pdf_file, 'rb') as f:
pdf_reader = PyPDF2.PdfReader(f)
text = '\n'.join([pdf_reader.pages[i].extract_text() for i in range(len(pdf_reader.pages))])
txt_file = os.path.splitext(pdf_file)[0] + '.txt'
with open(txt_file, 'w', encoding='utf-8') as f:
f.write(text)
问题分析:
上述代码在遇到无法读取的 PDF 文件时会直接中断程序,导致其他 PDF 文件无法被转换。
解决方案:
在代码中添加异常处理机制,当遇到无法读取的 PDF 文件时,捕获异常并记录错误信息,程序继续执行,确保其他 PDF 文件能够被成功转换。
修改后的代码:
import os
import PyPDF2
pdf_folder = r'D:\南巢\第六学期\大数据与会计分析\贵州茅台财务分析\年报'
# 获取所有pdf文件的路径
pdf_files = [os.path.join(pdf_folder, f) for f in os.listdir(pdf_folder) if f.endswith('.pdf')]
# 遍历每个pdf文件,将其转化为txt文件
for pdf_file in pdf_files:
try:
with open(pdf_file, 'rb') as f:
pdf_reader = PyPDF2.PdfReader(f)
text = '\n'.join([pdf_reader.pages[i].extract_text() for i in range(len(pdf_reader.pages))])
txt_file = os.path.splitext(pdf_file)[0] + '.txt'
with open(txt_file, 'w', encoding='utf-8') as f:
f.write(text)
except Exception as e:
print(f'Error processing file: {pdf_file}, Error message: {e}')
代码解释:
- 使用
try...except语句包裹需要进行异常处理的代码块。 - 在
except块中,捕获所有异常并使用print函数输出错误信息,包括文件名和错误消息。
通过添加异常处理机制,即使遇到无法读取的 PDF 文件,程序也能继续执行,完成其他 PDF 文件的转换,并记录无法转换文件的错误信息。
其他注意事项:
- 如果需要更详细的错误信息,可以根据具体异常类型进行更细粒度的异常处理。
- 也可以使用日志记录功能记录错误信息,方便后期排查问题。
希望本文能够帮助您解决 PDF 转 TXT 过程中遇到的异常问题,成功将所有 PDF 文件转换为 TXT 文件。
原文地址: https://www.cveoy.top/t/topic/oSQs 著作权归作者所有。请勿转载和采集!