Python:在子程序中使用模板和替换

2024-10-03 21:36:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含$DATE和$TIME的模板文件,将被当前值替换。 只要我在主程序中有evruthing就行了。 不过,我想把替换位放入子程序中,例如:

def substitute():
  DATE = '20120209'
  TIME = '1200'
  f = open( 'template.txt' )
  template = string.Template( ''.join(f.readlines()) )
  f.close()

  # substitute and save

  f = open( 'current.txt', 'w+' )
  f.writelines(template.safe_substitute( globals() ))
  f.close()

就像我说的,如果我把它放在主程序中的话,这个功能很好。但是在def版本中,只有在主程序中已经定义了日期和时间时,它才起作用。我不想这么做。在

有什么问题吗?在


Tags: 文件txt模板closedatestringtimedef
2条回答

你为什么不这样创建自己的词典:

subs = {'DATE' = '20120209',
        'TIME' = '1200'}

f.writelines(template.safe_substitute(subs))

globals()和{}包含多于DATE和{}。在

使用locals()代替globals(),这样DATE和{}的局部值被替换:

  f.writelines(template.safe_substitute( locals() ))

附言

^{pr2}$

在功能上等同于

f.read()

但速度较慢,因为它将文件拆分为多行,然后重新合并它们。您不妨使用f.read()。在

相关问题 更多 >