Source code for retdec.file

#
# Project:   retdec-python
# Copyright: (c) 2015 by Petr Zemek <s3rvac@gmail.com> and contributors
# License:   MIT, see the LICENSE file for more details
#

"""Representation of a file."""


[docs]class File: """Representation of a file. :param str/file-like object file: Either path to the file (`str`) or an opened file (a file-like object). :param str name: Name of the file to be used. When `name` is not given or it is ``None``, the name is taken from `file`. You can use `name` to set a custom file name that may be different from the real file's name. """ def __init__(self, file, name=None): if isinstance(file, str): # We got a path to the file. Since we do not know whether the file # is a binary or text file, open it in the binary mode to ensure # that no conversions are done during reading. file = open(file, 'rb') self._file = file self._name = name @property def name(self): """Name of the file (`str`). May be ``None`` if the file has no name. """ if self._name is not None: return self._name return getattr(self._file, 'name', None) @property def mode(self): """Mode in which the file is opened. If the file does not have a mode, it returns ``None``. """ return getattr(self._file, 'mode', None) def __repr__(self): return "<{} name={!r} mode={!r}>".format( __name__ + '.' + self.__class__.__name__, self.name, self.mode ) # Delegate other attributes to the underlying file. def __getattr__(self, attr): return getattr(self._file, attr)