PyPDF2 使用 3 種機(jī)制來(lái)顯示出錯(cuò)的地方:
Log messages 是可用于事后分析的信息性消息。大多數(shù)時(shí)候,用戶可以忽略它們。它們有不同的級(jí)別,例如指示嚴(yán)重性的信息/警告/錯(cuò)誤。示例是 PyPDF2 可以處理的非標(biāo)準(zhǔn)兼容 PDF 文件。
Warnings 是可以避免的問(wèn)題,例如使用已棄用的類/函數(shù)/參數(shù)。另一個(gè)例子是缺少 PyPDF2 的功能。在這些情況下,PyPDF2 用戶應(yīng)該調(diào)整他們的代碼。警告由警告模塊發(fā)出——它們不同于日志級(jí)別的“警告”。
Exceptions 是 PyPDF2 用戶應(yīng)該明確處理的錯(cuò)誤案例。在 strict=True 模式下,大多數(shù)具有警告級(jí)別的日志消息將成為異常。這在您可以強(qiáng)制用戶修復(fù)損壞的 PDF 的應(yīng)用程序中很有用。
Exceptions
如果要處理它們,則需要捕獲異常。例如,您可能希望從 PDF 中讀取文本作為搜索功能的一部分。
大多數(shù) PDF 文件不符合規(guī)范。在這種情況下,PyPDF2 需要猜測(cè)在創(chuàng)建 PDF 文件時(shí)可能會(huì)出現(xiàn)哪些類型的錯(cuò)誤。
作為用戶,您可能不關(guān)心它。如果它以任何方式可讀,那么您需要文本。您可以使用 pdfminer.six 作為后備并執(zhí)行此操作:
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")
在許多情況下,您實(shí)際上想要使用 ?-W
? 標(biāo)志啟動(dòng) Python,以便您看到所有警告。對(duì)于持續(xù)集成 (CI) 尤其如此。
Log messages
在某些情況下,日志消息可能很嘈雜。 PyPDF2 希望具有合理級(jí)別的日志消息,但您可以減少希望看到的消息類型:
import logging
logger = logging.getLogger("PyPDF2")
logger.setLevel(logging.ERROR)
日志記錄模塊定義了六個(gè)日志級(jí)別:
CRITICAL
ERROR
WARNING
INFO
DEBUG
NOTSET
更多建議: