为什么这个文件I / O代码不能在Eclipse / PyDev下工作但在终端中工作?

时间:2016-11-28 08:24:56

标签: python terminal pydev

我有工作代码,我使用tesseract从图像文件中提取数据,如下所示:

if src:
    driver.get(src)
    driver.save_screenshot('/Users/username/script/' + 'test.png')
    image_name = 'test.png'
    im = Image.open(image_name)
    image_text = pytesseract.image_to_string(im)
    print '\nImage Text:\t', image_text

当我执行代码时,此代码段在Mac终端中没有任何错误,但是当我使用PyDev在Eclipse中执行相同操作时,它会抛出错误:

Exception:  [Errno 2] No such file or directory

尝试执行该行时:

im = Image.open(image_name)

为什么会在Eclipse中发生这种情况?

更新:由于我的代码对于很少人来说似乎很时髦,我已将其更改为以下但问题仍然存在(在mac终端上运行完全正常,但Eclipse一直给我同样的错误)

if src:
    driver.get(src)
    image_name = 'test.png'
    image_path = os.path.realpath(image_name)
    driver.save_screenshot(image_path)

    # read chart data from image
    im = Image.open(image_path)

2 个答案:

答案 0 :(得分:1)

所以最终通过使用@Fabio建议的回溯来解决问题。它与当前目录中不存在的图像文件无关,但在路径中未找到tesseract的问题。

在pytesseract.py文件中,它显示为:

# CHANGE THIS IF TESSERACT IS NOT IN YOUR PATH, OR IS NAMED DIFFERENTLY
tesseract_cmd = 'tesseract'

请注意,直接更改pytesseract.py文件并不是一个好主意,但是在导入pytesseract的任何文件中,添加以下行(tesseract的路径将取决于您的特定计算机...在mac中我能够找到使用which命令的路径:which tesseract

pytesseract.pytesseract.tesseract_cmd = '/usr/local/bin/tesseract'

答案 1 :(得分:0)

您的代码有点奇怪......您使用路径保存,然后只使用image_name。

使用以下代码尝试:

import os

filename = '/path/to/the/image.png'
driver.save_screenshot(filename)
if not os.path.exists(filename):
    raise AssertionError("Image: %s does not exist" % (filename,))
Image.open(filename)

如果不起作用,请粘贴堆栈跟踪的全部内容。