2012-03-03 23 views
2

我是灰鯖一個新手,想從模板的.py腳本編程方式創建的.py腳本。所以做了這樣的工作馬可爲Python

比方說我的模板腳本具有可變var1 = ${var1},這需要說整數值。我希望能夠創建具有var1變量的特定值的許多副本。我如何創建一個調用者來聲明var1作爲列表,如var1 = [1,2,3,4],並迭代這些值並將它們傳遞給模板。如何做到這一點,像render(**locals())這樣的工作?

而且我無法下載真子,有一個窗口的Python 2.7可供下載?

回答

3

一旦你有一個模板對象,你可以遍歷您需要的值,並使用render方法如下,以獲得新的輸出:

from mako.template import Template 

template = Template('var1 = ${var1}') 

for v in range(1, 5): 
    context = {'var1': v} 
    print template.render(**context) 

輸出示例:

var1 = 1 
var1 = 2 
var1 = 3 
var1 = 4 

關於使用locals()的想法,那肯定會起作用:

for var1 in range(1, 5): 
    print template.render(**locals()) 

無論如何,我更願意顯式創建上下文字典。這與zen of python一致,表明明確優於隱含。

最後,關於安裝問題,我不知道任何可用的二進制文件,但可以使用pip進行安裝,如mako download page中所述。

+0

謝謝,可以請你詳細說明什麼語境和上下文**不 – 2012-03-04 15:33:09

+0

同樣得到什麼時,我說**當地人過去了,是當前本地範圍內的所有變量,因此,如果我跑了這一點腳本,腳本中定義的所有變量基本上都是?非常感謝。 – 2012-03-04 15:45:51

+0

當你使用'** context'時,字典對被展開,就好像該方法被稱爲'template.render(var1 = v)'一樣。有關更多信息,請查看此[相關問題](http://stackoverflow.com/q/1769403/183066)。 – jcollado 2012-03-04 17:36:03