2016-01-27 3 views
1

Я пытаюсь получить список имен выбранных узлов с Python в Nuke. Я пробовал:Получить выбранные имена узлов в список или кортеж в Nuke с Python

for s in nuke.selectedNodes(): 
    n = s['name'].value() 
    print n 

Это дает мне имена выбранных узлов, но как отдельные строки. Я ничего не могу с ними поделать, чтобы объединить каждую строку. Если я отобрали три Слияния, в редакторе сценариев Nuke я получаю:

Результат: Merge3 Merge2 Merge1

Если я оберните последнюю переменную п в скобках, я получаю:

Result: ['Merge3'] 
['Merge2'] 
['Merge1'] 

Вот как я знаю, что это отдельные строки. Я нашел другой способ: вернуть выбранные узлы. Я использовал:

s = nuke.tcl("selected_nodes") 
print s 

Я получаю нечетные имена обратно, как node3a7c000, но эти имена работают в чем , который вызывает узел, как nuke.toNode(), и все они на одной линии. Я пытался заставить эти результаты в виде списка или кортежа, например, так:

s = nuke.tcl("selected_nodes") 

print s 

Результат: node3a7c000 node3a7c400 node3a7c800

s = nuke.tcl("selected_nodes") 

s2 = s.replace(" ","', '") 

s3 = "(" + "'" + s2 + "'" + ")" 

print s3 

Результат: ('node3a7c000', 'node3a7c400', 'node3a7c800')

Мой результат выглядит как стандартная конструкция кортежа, но если я попробую вызвать первое значение из t он кортеж, я возвращаю скобки. Этот выглядит так, как будто мой созданный кортеж по-прежнему является строкой.

Есть ли что-нибудь, что я могу сделать, чтобы собрать список или набор выбранных узлов имена? Я не уверен, что я делаю неправильно, и кажется, что мое последнее решение должно сработать.

ответ

2

Поскольку вы перебираете каждый узел, вы хотите добавить его имя в список ([]), а затем вернуть его. Например:

names = [] 
for s in nuke.selectedNodes(): 
    n = s['name'].value() 
    names.append(n) 
print names 

Это даст вам:

# Result: ['Merge3', 'Merge2', 'Merge1'] 

Если вы знакомы с списковыми, вы также можете использовать один, чтобы сделать names в одной строке:

names = [s['name'].value() for s in nuke.selectedNodes()] 
+0

Совершенных ! Это действительно то, что мне нужно! Я тоже пытался что-то с пустыми массивами и добавлял в него значения, но я делал это неправильно. Глупые для петель всегда дают мне тяжелое время. – jakenolan52

+0

@ jakenolan52 Я заметил, что вы не приняли этот ответ. Было ли что-то, что, по вашему мнению, отсутствовало, что я мог бы улучшить? – mhlester

+0

нет, он отлично работает! Это был последний фрагмент, который мне не хватало в инструменте, который я писал. На днях я показывал «Переполнение стека коллеги» на моем телефоне, и я, возможно, ошибся. – jakenolan52