Files
rdkit/Python/utils/REFile.py
Greg Landrum 75a79b6327 initial import
2006-05-06 22:20:08 +00:00

106 lines
2.1 KiB
Python
Executable File

#
# Copyright (C) 2000 greg Landrum
#
""" contains class REFile, for working with files containing comments
"""
import re
class REFile:
"""behaves more or less like a normal file, but removes comments
Any read from the file skips lines beginning with a comment character
and cleaves off any portion of the line following a comment character
"""
def close(self):
""" closes the file
"""
self.inFile.close()
def rewind(self):
""" rewinds the file (seeks to the beginning)
"""
self.inFile.seek(0)
def readlines(self):
""" reads in all the lines of the file
"""
res = []
eofHit = 0
while not eofHit:
l = self.inFile.readline()
if l == '':
eofHit = 1
else:
l = self.expr.split(l)[0]
eofHit = 0
while len(l) == 0 and not eofHit:
l = self.inFile.readline()
if l == '':
eofHit = 1
else:
l = self.expr.split(l)[0]
if not eofHit:
res.append(l)
return res
def readline(self):
""" reads in a single line from the file
"""
l = self.inFile.readline()
if l == '':
eofHit = 1
else:
l = self.expr.split(l)[0]
eofHit = 0
while len(l) == 0 and not eofHit:
l = self.inFile.readline()
if l == '':
eofHit = 1
else:
l = self.expr.split(l)[0]
return l
def __init__(self,fileName,mode='r',commentChar='#|\n'):
""" Constructor
**Arguments**
- fileName: the filename from which to read
- mode: the mode in which to open the file
- commentChar: a regexp defining the comment character
"""
self.expr = re.compile(commentChar)
self.fileName = fileName
self.mode = mode
self.inFile = open(fileName,mode)
if __name__ == '__main__':
fName = 'retest.txt'
ref = REFile(fName)
lines = ref.readlines()
print 'readlines:'
for i in xrange(len(lines)):
print '\t%d: %s'%(i,lines[i])
ref.rewind()
print 'readline:'
inStr = ref.readline()
nRead = 0
while inStr != '':
print '\t%d: %s'%(nRead,inStr)
nRead=nRead+1
inStr = ref.readline()