首页 > 解决方案 > 如何处理PYTHON中“页码不存在”的异常?

问题描述

我有几行代码可以读取 PDF 文件并以 csv 格式提取其中包含的表格,为此我使用 tabula-py,代码如下;

import tabula

file = "MyFile.pdf" 

tables = tabula.read_pdf(file, pages = "100", multiple_tables = True, stream=True)

tabula.convert_into(file, "MyFile.csv", pages="100") 

当我pages在指令的属性中输入页码 tabula.read_pdf但 PDF 文件中不存在此页码时,它会抛出我无法处理的错误类型,错误如下;

Error from tabula-java:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Page number does not exist
    at technology.tabula.ObjectExtractor.extractPage(ObjectExtractor.java:19)
    at technology.tabula.PageIterator.next(PageIterator.java:29)
    at technology.tabula.CommandLineApp.extractFile(CommandLineApp.java:166)
    at technology.tabula.CommandLineApp.extractFileTables(CommandLineApp.java:129)
    at technology.tabula.CommandLineApp.extractTables(CommandLineApp.java:111)
    at technology.tabula.CommandLineApp.main(CommandLineApp.java:81)

我正在寻找的是能够通过“尝试”或以某种方式处理此异常,即当输入 PDF 文件中不存在的页码时,它会使用页面不存在的“打印”打印我找到或不存在。

如果有人可以帮助我,我将不胜感激。

标签: python

解决方案


  1. 根据文档,您可以尝试在代码中捕获许多异常:

    • FileNotFoundError – 如果下载的远程文件不存在。
    • ValueError – 如果 output_format 是未知格式,或者下载的远程文件大小为 0。
    • tabula.errors.CSVParseError – 如果 pandas CSV 解析失败。
    • tabula.errors.JavaNotFoundError – 如果未安装或找不到 java。
    • subprocess.CalledProcessError – 如果 tabula-java 执行失败。

    更多信息


  1. 请检查,也许简单pages="all"会做你需要的。
tables = tabula.read_pdf(file, pages = "all", multiple_tables = True, stream=True)

推荐阅读