2013-04-23 2 views
3

Итак, я пытаюсь заставить python печатать строку с переменной tcl в ней с результатом этой переменной. Я использую ядерное оружие, если это имеет значение для моего кода.Привет, python, чтобы разрешить переменную tcl? Nuke

[set THIS image] 
Ln = "/Test/still/testing/$THIS\_clean_v001" 
print(Ln) # this prints exactly the above 

G = nuke.tcl('[puts "$THIS"] ') 

Будет print(G) вернуть изображение слова или нет?

Я мог бы затем подключить его. Проблема заключается в текстовом поле, в которое я вхожу, что tcl in разрешает его внутри программы в порядке, но затем, как только я отправлю его для обработки, он принимает буквально $THIS.

+0

Вы можете связать нас с Документами 'nuke.tcl'? – Eric

+0

не в nuke на данный момент, но это в основном: nuke.tcl (скрипт, * args), если это помогает. Я буду смотреть онлайн в среднем – aescript

ответ

4

Две вещи, чтобы отметить:

  1. Tcl puts не возвращает значение. Похоже, вы хотите Tcl set, что и есть.

  2. Документах для nuke.tcl на http://www.nukepedia.com/reference/Python указывают:

    tcl(command, arg, arg, ...)

    Выполнение команды TCL. Аргументы должны быть строками и передаваться команде. Если аргументы не заданы, а команда имеет пробелы в нем, то он вместо того, чтобы интерпретировать как программа TCL (это амортизируется)

Вместо вызова его в качестве полного сценария, кажется, вы могли бы как использовать не-осуждаются версия и получить поведение, которое вы хотите с помощью:

G = nuke.tcl("set", "THIS") 

Whic должен reutrn значения переменной THIS.

+0

Я, хотя и установлен, ну, в переменной, а не возвратил его. Я уже установил переменную в другом месте. Я не прав? – aescript

+0

С помощью одного аргумента set возвращает текущее значение переменной. С двумя, он устанавливает новое значение, а затем возвращает это. – ckhan

+0

Aghhh ладно спасибо. Немного новичок в tcl и, должно быть, пропустил это в документах. – aescript

0

Вы также можете сделать однократное расширение всех переменных TCL в строке с помощью команды TCL subst.

nuke.tcl('set', 'THIS', 'image') 
p = '/Test/still/testing/$THIS\_clean_v001' 
print nuke.tcl('subst', p) 

В результате этого будет правильно вспененные строка: '/Test/still/testing/image_clean_v001'

Документация для SUBST можно найти здесь: http://www.tcl.tk/man/tcl8.4/TclCmd/subst.htm

Смежные вопросы