1
2 """Working with parameter-files"""
3
4 import re,os
5
6 from PyFoam.Basics.LineReader import LineReader
7 from FileBasis import FileBasisBackup
8
10 """Represents a OpenFOAM parameter file"""
11
13 """@param name: The name of the parameter file
14 @param backup: create a backup-copy of the file"""
15
16 FileBasisBackup.__init__(self,name,backup=backup)
17
19 """creates a regular expression that looks for aparameter
20
21 parameter - name of the parameter"""
22 return re.compile("(.*) *"+parameter+" +(.*) *;(.*)")
23
25 """reads the value of a parameter
26
27 parameter - name of the parameter"""
28 exp=self.parameterPattern(parameter)
29
30 l=LineReader()
31 self.openFile()
32
33 erg=""
34
35 while l.read(self.fh):
36 m=exp.match(l.line)
37 if m!=None:
38 if m.group(1).find(self.removedString)<0:
39 erg=m.group(2)
40 break
41
42 self.closeFile()
43 return erg
44
46 """writes the value of a parameter
47
48 @param parameter: name of the parameter
49 @param newval: the new value
50 @return: old value of the parameter"""
51
52 oldVal=self.readParameter(parameter)
53
54 exp=self.parameterPattern(parameter)
55
56 l=LineReader()
57 self.openFile()
58
59 (fh,fn)=self.makeTemp()
60
61 while l.read(self.fh):
62 toPrint=l.line
63
64 m=exp.match(l.line)
65 if m!=None:
66 if m.group(1).find(self.removedString)<0:
67 toPrint =self.removedString+l.line+"\n"
68 toPrint+=parameter+" "+str(newval)+"; "+self.addedString
69 fh.write(toPrint+"\n")
70
71 self.closeFile()
72 fh.close()
73 os.rename(fn,self.name)
74
75 return oldVal
76