Source code for nxpy.core.file_object
# nxpy.core package ----------------------------------------------------------
# Copyright Nicola Musatti 2008 - 2012
# Use, modification, and distribution are subject to the Boost Software
# License, Version 1.0. (See accompanying file LICENSE.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
# See http://sourceforge.net/nxpy for library home page. ---------------------
r"""
Helper classes for the implementation of read-only and writable file objects that forward calls
to an actual file object variable.
"""
import os
[docs]class ReadOnlyFileObject(object):
r"""
Implement the non modifying portion of the file object protocol by delegating to
another file object.
Subclass and override as needed.
"""
def __init__(self, file=None):
r"""Set the delegate file object."""
self.setFile(file)
@property
def closed(self):
return self._file.closed
@property
def encoding(self):
return self._file.encoding
@property
def mode(self):
return self._file.mode
@property
def name(self):
return self._file.name
@property
def newlines(self):
return self._file.newlines
@property
def softspace(self):
return self._file.softspace
[docs] def setFile(self, file):
r"""Set the delegate file object."""
self._file = file
def close(self):
self._file.close()
def flush(self):
self._file.flush()
def __iter__(self):
return self
def next(self):
return self._file.next()
def read(self, size=-1):
return self._file.read(size)
def readline(self, size=-1):
return self._file.readline(size)
def readlines(self, sizehint=None):
if sizehint is None:
return self._file.readlines()
else:
return self._file.readlines(sizehint)
def xreadlines(self):
return self._file.xreadlines()
def seek(self, offset, whence=os.SEEK_SET):
return self._file.seek(offset, whence)
def tell(self):
return self._file.tell()
[docs]class WritableFileObject(ReadOnlyFileObject):
r"""
Implement the file object protocol by delegating to another file object.
Subclass and override as needed.
"""
def __init__(self, file=None):
super(WritableFileObject, self).__init__(file)
def truncate(self, size=None):
if size is None:
self._file.truncate()
else:
self._file.truncate(size)
def write(self, str):
self._file.write(str)
def writelines(self, sequence):
self._file.writelines(sequence)