当我尝试运行以下代码时,我不知道如何解决此错误:
df = wrapper.read_pdf(r'C:\End_to_End\1902\PN\Scenario1_AllCorrectMin\EPR.pdf')
日志:
FileNotFoundError Traceback (most recent call last)
~\AppData\Local\Continuum\anaconda3\lib\site-packages\tabula\wrapper.py in read_pdf(input_path, output_format, encoding, java_options, pandas_options, multiple_tables, **kwargs)
107 try:
--> 108 output = subprocess.check_output(args)
109
~\AppData\Local\Continuum\anaconda3\lib\subprocess.py in check_output(timeout, *popenargs, **kwargs)
335 return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
--> 336 **kwargs).stdout
337
~\AppData\Local\Continuum\anaconda3\lib\subprocess.py in run(input, timeout, check, *popenargs, **kwargs)
402
--> 403 with Popen(*popenargs, **kwargs) as process:
404 try:
~\AppData\Local\Continuum\anaconda3\lib\subprocess.py in __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, encoding, errors)
708 errread, errwrite,
--> 709 restore_signals, start_new_session)
710 except:
~\AppData\Local\Continuum\anaconda3\lib\subprocess.py in _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, unused_restore_signals, unused_start_new_session)
996 os.fspath(cwd) if cwd is not None else None,
--> 997 startupinfo)
998 finally:
FileNotFoundError: [WinError 2] The system cannot find the file specified
During handling of the above exception, another exception occurred:
JavaNotFoundError Traceback (most recent call last)
<ipython-input-3-010e34a004ec> in <module>()
----> 1 df = wrapper.read_pdf(r'C:\End_to_End\1902\PN\Scenario1_AllCorrectMin\EPR.pdf')
~\AppData\Local\Continuum\anaconda3\lib\site-packages\tabula\wrapper.py in read_pdf(input_path, output_format, encoding, java_options, pandas_options, multiple_tables, **kwargs)
109
110 except FileNotFoundError as e:
--> 111 raise JavaNotFoundError(JAVA_NOT_FOUND_ERROR)
112
113 except subprocess.CalledProcessError as e:
JavaNotFoundError: `java` command is not found from this Python process. Please ensure Java is installed and PATH is set for `java`
我尝试在环境变量中更改和创建路径,但是没有用。这是屏幕截图:
有人知道如何解决此问题吗?我有Java版本8(已通过Java检查)
答案 0 :(得分:1)
您需要将Java添加到path
变量中(请参阅Java帮助中心中的this question),而不是创建一个新变量。另外,请确保您正确引用了要读取的文件,看起来您的日志中抛出了FileNotFound异常。
答案 1 :(得分:0)
在System Variables
下,单击Path
,然后按Edit...
而不是New
。然后在下一个屏幕中(路径变量为Edit environment variable
),点击New
并添加地址,例如C:\Program Files (x86)\Java\jre1.8.0_201\bin
。按下OK
,Path变量将被附加/更新。
您需要重新启动环境(例如Chrome,Anaconda等),路径才能生效。
答案 2 :(得分:0)
请注意,如果您尚未在计算机上安装Java,则此代码将不起作用。我可以确认自己以前没有运行Java并遇到了问题,然后当我下载Java并将其添加到PATH(如上面的解决方案中所述)后,就可以正常工作。
摘要:
答案 3 :(得分:0)
我在工作 PC 上尝试使用 tabula
从 PDF 读取表格数据时也遇到了同样的问题。以下流程帮助我克服了这个问题。
我还使用了 amazon corretto,它基本上是一个 openJDK。免费使用和安装,由亚马逊维护。
将其安装在 C:\
驱动器中。
现在,转到系统属性中的 environment variables
。在 system variables
下,双击 Path
并单击 New
添加这样的路径 C:\Users\20195579\amazon-corretto-11.0.12.7.1-windows-x64-jdk\jdk11.0.12_7
还要在 system variables
中添加新变量。 Variable Name: JAVA_HOME
variable value: C:\Users\20195579\amazon-corretto-11.0.12.7.1-windows-x64-jdk\jdk11.0.12_7
见下图。
Incase 仍然面临问题,将 Oracle javapath 添加到 Path
中的 system variables
。像这样C:\Program Files (x86)\Common Files\Oracle\Java\javapath
在工作 PC 和个人 PC 上都检查过,运行良好。