findAll(Pattern("excel_icon.png").similar(0.9))
nn = getLastMatches()
print "nn -> ",list(nn)
while nn.hasNext():
print "excel --> ",nn.next()
以上是代码。在这里,我试图在桌面上找到所有MS excel图标,然后 一个接一个地打印。当我运行它时,只有第三行代码的输出在sikuli的消息框中可见,并且它没有打印第5行。 输出: -
nn -> [Match[470,936 53x56 score=0.98 target=center], Match[394,936 53x56 score=0.98 target=center]
但是,当我在第三行中将list(nn)
替换为nn
时
print "nn -> ",nn
我得到的输出是: -
nn -> org.sikuli.script.Finder@4b0431
excel --> Match[470,936 53x56 score=0.98 target=center]
excel --> Match[394,936 53x56 score=0.98 target=center]
我很困惑为什么在第3行使用line()时不打印第5行。任何人都可以帮助我吗?
答案 0 :(得分:1)
getLastMatches()返回类Finder的对象,它是迭代器。
以下代码:
print "nn -> ",list(nn)
在
时迭代 nnprint "nn -> ",nn
不会迭代。
这就是 nn.hasNext()首先执行 list(nn)后返回false的原因。要更好地理解它,请在中运行两次,如下所示:
print "first while"
while exfind.hasNext():
print "excel --> ",exfind.next()
print "second while"
while exfind.hasNext():
print "excel --> ",exfind.next()
“第二次”之后不会显示任何内容。