Nuke中的Python: 除了StopIteration
我现在想做的事情是,在Nuke里用Python写一个脚本,目的是让用户选择一些节点,然后给这些节点添加“shuffle”节点,以便更方便地进行合成工作。不过,我在让Nuke把“shuffle”节点加到选中的节点上遇到了问题。选择一个节点时可以正常工作,但如果选择多个节点,它只会对第一个节点有效。
我问了一个朋友,她建议我试试“while”循环,所以我写了以下的代码:
while True:
if n in nuke.selectedNodes():
name = n.name()
node = nuke.toNode(name)
blue.setInput(0,node)
green.setInput(0,node)
red.setInput(0,node)
except StopIteration :
break
这段代码在执行时都挺好的,直到出现了“except”部分。我在没有“except”的情况下运行了这个脚本,结果导致Nuke卡住了,显示它在无限运行,但我需要它停止。Nuke还告诉我“except”部分有语法错误。有没有人知道我该如何修复这个问题,或者有没有更好的方法来实现我想要的功能?
2 个回答
0
捕捉一个名为 <exception_name>
的异常的正确写法是:
try:
#code here...
except <exception_name>:
#code here...
编辑:
看起来你的代码还有其他问题...
1
也许你应该先想想自己在做什么,而不是光靠语法来解决问题,希望它能自动消失。except
这个词没有 try
块是没意义的,而且你并没有给 n
赋值。你可能是想写成这样:
for n in nuke.selectedNodes():
name = n.name()
node = nuke.toNode(name)
blue.setInput(0,node)
green.setInput(0,node)
red.setInput(0,node)
如果你像这样使用迭代器,就不需要去捕捉 StopIteration
了。