Nuke中的Python: 除了StopIteration

0 投票
2 回答
1428 浏览
提问于 2025-04-17 18:04

我现在想做的事情是,在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 了。

撰写回答