TypeError:' NoneType'对象不是可迭代的pyscreeze

时间:2016-10-21 15:54:42

标签: python

我试图在当前屏幕中检测到一张图片。有时它可以找到图片并返回图片的结果位置。但有时它可以在当前屏幕中找到它。在那个时候,它出错了

TypeError: 'NoneType' object is not iterable

因为没有找到结果。我试图通过

找不到结果时抛出
try:
    a,b,c,d = pyscreeze.locateOnScreen('pic.png')
except AttributeError:
    print('no object found on screen')

传递它并继续寻找但遗憾的是,它不起作用。那么,当没有找到图片时,无论如何都要抛出错误TypeError: 'NoneType' object is not iterable

2 个答案:

答案 0 :(得分:2)

您必须except引发的错误类型,因此在这种情况下应该是:

try:
    a,b,c,d = pyscreeze.locateOnScreen('pic.png')
except TypeError:
#      ^
    print('no object found on screen')

请注意,except可以指定错误类型,但这通常不是好习惯。

答案 1 :(得分:1)

根据文档https://pypi.python.org/pypi/PyScreeze/0.1.0locateOnScreen()如果找不到任何内容,则会返回None,因此您可能希望代码类似:

position = pyscreeze.locateOnScreen('pic.png')
if position is None:
    print("Not found")
else:
    a,b,c,d = position