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}')

代码解释:

  1. 使用 try...except 语句包裹需要进行异常处理的代码块。
  2. except 块中,捕获所有异常并使用 print 函数输出错误信息,包括文件名和错误消息。

通过添加异常处理机制,即使遇到无法读取的 PDF 文件,程序也能继续执行,完成其他 PDF 文件的转换,并记录无法转换文件的错误信息。

其他注意事项:

  • 如果需要更详细的错误信息,可以根据具体异常类型进行更细粒度的异常处理。
  • 也可以使用日志记录功能记录错误信息,方便后期排查问题。

希望本文能够帮助您解决 PDF 转 TXT 过程中遇到的异常问题,成功将所有 PDF 文件转换为 TXT 文件。

Python PDF 转 TXT 异常处理:解决无法读取 PDF 文件问题

原文地址: https://www.cveoy.top/t/topic/oSQs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录