36 lines
830 B
Python
36 lines
830 B
Python
class File(object):
|
|
|
|
@classmethod
|
|
def fromhandle(cls, handle):
|
|
return File(handle.name, handle.mode)
|
|
|
|
def __init__(self, name, mode='rb'):
|
|
self._handle = None
|
|
self._data = None
|
|
|
|
self.mode = mode
|
|
self.closed = False
|
|
self.name = name
|
|
|
|
def read(self):
|
|
self.open()
|
|
|
|
if self._data:
|
|
return self._data
|
|
else:
|
|
self._data = self._handle.read()
|
|
return self._data
|
|
|
|
def close(self):
|
|
if self._handle:
|
|
self._handle.close()
|
|
self._handle = None
|
|
self.closed = True
|
|
|
|
def open(self):
|
|
if not self._handle:
|
|
if not self.closed:
|
|
self._handle = open(self.name, self.mode)
|
|
else:
|
|
raise IOError('Open of closed file')
|