2013-04-23 79 views
3

所以,我試圖讓python打印一個字符串,其中有一個tcl變量,該變量的結果。我正在使用nuke,以防我的代碼受到影響。嘿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中的文本字段來解決它在程序內部的問題,但是一旦我發送它來處理它就需要從字面上理解$THIS

+0

你能向我們提供的文檔爲'nuke.tcl'? – Eric 2013-04-23 23:39:58

+0

現在不在覈武,但它基本上是:nuke.tcl(腳本,*參數)如果有幫助。我會在網上查看 – aescript 2013-04-23 23:50:04

回答

4

有兩點需要注意:

  1. 的Tcl puts沒有返回值。這聽起來像你想Tcl set,這是。

  2. nuke.tclhttp://www.nukepedia.com/reference/Python該文檔表明:

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

    運行Tcl命令。參數必須是字符串並傳遞給命令。如果沒有給定參數和命令中有空格則不是解釋爲TCL程序(這是貶值)

而不是調用它作爲一個完整的劇本,看來你們都用非過時版本並使用得到你想要的行爲:

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

Whic應該reutrn的THIS變量的值。

+0

,雖然我設置好了,但是在變量中,沒有返回它。我已經在其他地方設置了變量。我錯了嗎? – aescript 2013-04-24 00:46:45

+0

使用一個參數,set返回變量的當前值。用兩個,它設置新值然後返回。 – ckhan 2013-04-24 00:48:26

+0

Aghhh好的謝謝。對tcl稍有新意,並且必須在文檔中錯過 – aescript 2013-04-24 00:54:59

0

您也可以使用TCL subst命令對字符串中的所有TCL變量進行一次性擴展。

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