[Checkins] SVN: z3c.extfile/trunk/src/z3c/extfile/hashdir.py
readfile now closes on eof
Bernd Dorn
bernd.dorn at fhv.at
Wed Sep 13 11:04:43 EDT 2006
Log message for revision 70151:
readfile now closes on eof
Changed:
U z3c.extfile/trunk/src/z3c/extfile/hashdir.py
-=-
Modified: z3c.extfile/trunk/src/z3c/extfile/hashdir.py
===================================================================
--- z3c.extfile/trunk/src/z3c/extfile/hashdir.py 2006-09-13 13:41:29 UTC (rev 70150)
+++ z3c.extfile/trunk/src/z3c/extfile/hashdir.py 2006-09-13 15:04:42 UTC (rev 70151)
@@ -77,11 +77,11 @@
interface.implements(interfaces.IReadFile)
def __init__(self, name, bufsize=-1):
- """we always use read binary as mode"""
self.name = name
self.digest = os.path.split(self.name)[1]
self.bufsize=bufsize
self._v_file = None
+ self._v_len = None
@property
def _file(self):
@@ -92,7 +92,9 @@
return self._v_file
def __len__(self):
- return int(os.stat(self.name)[stat.ST_SIZE])
+ if self._v_len is None:
+ self._v_len = int(os.stat(self.name)[stat.ST_SIZE])
+ return self._v_len
def __repr__(self):
return "<ReadFile named %s>" % repr(self.digest)
@@ -107,8 +109,17 @@
def read(self, size=-1):
"""see file.read"""
- return self._file.read(size)
+ chunk = self._file.read(size)
+ if chunk == '':
+ self.close()
+ return chunk
+ def readline(self, size=-1):
+ line = self._file.readline(size)
+ if line == '':
+ self.close()
+ return line
+
def close(self):
"""see file.close"""
if self._v_file is not None:
@@ -120,8 +131,12 @@
return self._file.fileno()
def __iter__(self):
- return self._file.__iter__()
+ return self
+ def next(self):
+ return self.readline()
+
+
class WriteFile(object):
interface.implements(interfaces.IWriteFile)
More information about the Checkins
mailing list