我正在尝试从示例模板文件写入文件。
我只需将$UPPERINTERFACE
替换为interface
。
这是示例template.txt
localparam $UPPERINTERFACE_WDTH = 1;
localparam $UPPERINTERFACE_DPTH = 8;
localparam $UPPERINTERFACE_WTCHD = 2;
这是代码:
from string import Template
intf = "interface"
rdfh = open("template.txt", "r").readlines()
wrfh = open("myfile.txt", "w")
for line in rdfh:
s = Template(line)
s = s.substitute(UPPERINTERFACE=intf.upper())
wrfh.write(s)
rdfh.close()
wrfh.close()
预期输出:
localparam interface_WDTH = 1;
localparam interface_DPTH = 8;
localparam interface_WTCHD = 2;
由于将$UPPERINTERFACE_WDTH
作为要替换的变量,因此出现以下错误:
KeyError: 'UPPERINTERFACE_WDTH'
有什么办法可以在这里用$UPPERINTERFACE
仅替换interface
吗?
答案 0 :(得分:1)
您可以使用大括号{}
来缩小模板关键字的范围,如以下模板字符串所示:
>>> line = 'localparam ${UPPERINTERFACE}_WDTH = 1;'
>>> Template(line).substitute(UPPERINTERFACE=intf.upper())
'localparam INTERFACE_WDTH = 1;'
documentation指出以下内容:
${identifier}
等效于$identifier
。当有效的标识符字符位于占位符之后但不属于占位符时,例如"${noun}ification"
,则是必需的。