Source code for PyFoam.RunDictionary.ParameterFile

#  ICE Revision: $Id$
"""Working with parameter-files"""

import re,os

from PyFoam.Basics.LineReader import LineReader
from PyFoam.RunDictionary.FileBasis import FileBasisBackup

[docs]class ParameterFile(FileBasisBackup): """Represents a OpenFOAM parameter file""" def __init__(self,name,backup=False): """:param name: The name of the parameter file :param backup: create a backup-copy of the file""" FileBasisBackup.__init__(self,name,backup=backup)
[docs] def parameterPattern(self,parameter): """creates a regular expression that looks for aparameter parameter - name of the parameter""" return re.compile("(.*)\s*"+parameter+"\s+(.*)\s*;(.*)")
[docs] def readParameter(self,parameter): """reads the value of a parameter parameter - name of the parameter""" exp=self.parameterPattern(parameter) l=LineReader() self.openFile() erg="" while l.read(self.fh): m=exp.match(l.line) if m!=None: if m.group(1).find(self.removedString)<0: if l.line.find("//")>=0 and l.line.find("//")<l.line.find(parameter): continue erg=m.group(2) break self.closeFile() return erg
[docs] def replaceParameter(self,parameter,newval): """writes the value of a parameter :param parameter: name of the parameter :param newval: the new value :return: old value of the parameter""" oldVal=self.readParameter(parameter) exp=self.parameterPattern(parameter) l=LineReader() self.openFile() (fh,fn)=self.makeTemp() while l.read(self.fh): toPrint=l.line m=exp.match(l.line) if m!=None: if m.group(1).find(self.removedString)<0: toPrint =self.removedString+l.line+"\n" toPrint+=parameter+" "+str(newval)+"; "+self.addedString fh.write(toPrint+"\n") self.closeFile() fh.close() os.rename(fn,self.name) return oldVal