You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python新手遇FileNotFoundError[WinError2]:PDF转Excel代码报错求助

解决Windows下tabula-py报FileNotFoundError的问题

核心原因

你遇到的FileNotFoundError大概率不是找不到PDF文件,而是tabula-py依赖的Java环境未安装或未配置——tabula底层调用Java版的tabula-java工具,Windows系统找不到Java执行文件时就会抛出这个错误。

解决步骤

1. 安装Java环境

下载并安装Java Runtime Environment(JRE)或Java Development Kit(JDK),版本建议1.8及以上:

  • 可选OpenJDK(免费开源)或Oracle JDK
  • 安装时务必勾选「Add to PATH」选项,若未勾选,后续需手动配置环境变量

2. 手动配置Java环境变量(若安装时未自动配置)

  • 找到Java安装目录下的bin文件夹,比如C:\Program Files\Java\jre1.8.0_381\bin
  • 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
  • 在「系统变量」的Path中添加上述bin路径

3. 验证Java配置

打开命令提示符(cmd),输入:

java -version

若能显示Java版本信息,说明配置成功。

4. 重启环境

关闭并重新打开VS Code和Anaconda终端,确保环境变量生效。

额外检查与优化

  • 检查PDF占用:确保PDF文件没有被其他程序(如Adobe Reader)打开,否则会导致无法读取
  • 简化路径测试:可以把PDF放到桌面等短路径目录,用r"C:\Users\shattv\Desktop\TestInvoice.pdf"测试,排除路径过长或特殊字符问题
  • 更新tabula-py:执行命令更新到最新版本:
    pip install --upgrade tabula-py
    
  • 修复代码逻辑:tabula.read_pdf(pages="all")返回的是DataFrame列表,直接调用to_excel会报错,需调整代码:
    import tabula
    import pandas as pd
    
    file_path = r"C:\Users\shattv\anaconda3\envs\venv1\TestInvoice.pdf"
    oup = r"C:\Users\shattv\anaconda3\envs\venv1\test.xlsx"
    
    dfs = tabula.read_pdf(file_path, pages="all")
    # 单个表格写入
    if len(dfs) == 1:
        dfs[0].to_excel(oup, index=False)
    # 多个表格写入不同Sheet
    else:
        with pd.ExcelWriter(oup) as writer:
            for idx, df in enumerate(dfs):
                df.to_excel(writer, sheet_name=f"Page_{idx+1}", index=False)
    

内容的提问来源于stack exchange,提问作者shattv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 16:33:37