PyPDF2 使用 3 种机制来显示出错的地方:
Log messages 是可用于事后分析的信息性消息。大多数时候,用户可以忽略它们。它们有不同的级别,例如指示严重性的信息/警告/错误。示例是 PyPDF2 可以处理的非标准兼容 PDF 文件。
Warnings 是可以避免的问题,例如使用已弃用的类/函数/参数。另一个例子是缺少 PyPDF2 的功能。在这些情况下,PyPDF2 用户应该调整他们的代码。警告由警告模块发出——它们不同于日志级别的“警告”。
Exceptions 是 PyPDF2 用户应该明确处理的错误案例。在 strict=True 模式下,大多数具有警告级别的日志消息将成为异常。这在您可以强制用户修复损坏的 PDF 的应用程序中很有用。
Exceptions
如果要处理它们,则需要捕获异常。例如,您可能希望从 PDF 中读取文本作为搜索功能的一部分。
大多数 PDF 文件不符合规范。在这种情况下,PyPDF2 需要猜测在创建 PDF 文件时可能会出现哪些类型的错误。
作为用户,您可能不关心它。如果它以任何方式可读,那么您需要文本。您可以使用 pdfminer.six 作为后备并执行此操作:
from PyPDF2 import PdfReader
from pdfminer.high_level import extract_text as fallback_text_extraction
text = ""
try:
reader = PdfReader("example.pdf")
for page in reader.pages:
text += page.extract_text()
except Exception as exc:
text = fallback_text_extraction("example.pdf")
如果你喜欢更具体的东西,你也可以捕获 PyPDF2.errors.PyPdfError
。
Warnings
Warnings
模块允许您忽略警告:
import warnings
warnings.filterwarnings("ignore")
在许多情况下,您实际上想要使用 -W
标志启动 Python,以便您看到所有警告。对于持续集成 (CI) 尤其如此。
Log messages
在某些情况下,日志消息可能很嘈杂。 PyPDF2 希望具有合理级别的日志消息,但您可以减少希望看到的消息类型:
import logging
logger = logging.getLogger("PyPDF2")
logger.setLevel(logging.ERROR)
日志记录模块定义了六个日志级别:
CRITICAL
ERROR
WARNING
INFO
DEBUG
NOTSET
更多建议: