mirror of
https://github.com/rdkit/rdkit.git
synced 2026-06-05 22:04:27 +08:00
106 lines
2.1 KiB
Python
Executable File
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()
|
|
|
|
|
|
|