python - 如何处理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 文件中不存在的页码时,它会使用页面不存在的“打印”打印我找到或不存在。
如果有人可以帮助我,我将不胜感激。
解决方案
根据文档,您可以尝试在代码中捕获许多异常:
- FileNotFoundError – 如果下载的远程文件不存在。
- ValueError – 如果 output_format 是未知格式,或者下载的远程文件大小为 0。
- tabula.errors.CSVParseError – 如果 pandas CSV 解析失败。
- tabula.errors.JavaNotFoundError – 如果未安装或找不到 java。
- subprocess.CalledProcessError – 如果 tabula-java 执行失败。
- 请检查,也许简单
pages="all"
会做你需要的。
tables = tabula.read_pdf(file, pages = "all", multiple_tables = True, stream=True)
推荐阅读
- python - PIL 和 Pillow 安装程序在未安装的情况下突然关闭 (Windows 10)
- php - 更好地使用 Wordpress 主题 Mod
- php - Array_push 不生成新键,而是替换当前值
- node.js - 错误 eslint@5.6.0:引擎“节点”与此模块不兼容。尝试创建反应应用程序时
- unity3d - Google Play 游戏服务登录时应用程序崩溃
- javascript - Twilio:无法连接到 Live:信号连接已断开
- javascript - Next.js 中具有嵌套组件路由渲染功能的等效路由?
- curly-braces - Magento 2标签翻译显示大括号
- c++ - 如何修复 xychart.cpp 中的“index < m_series->count()”错误?
- sql - SQL 将两个表合并为下两个表,其中每个表具有重复的不同值