Source code for epygram.container
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import footprints
from footprints import FootprintBase
from epygram.util import RecursiveObject
[docs]class File(RecursiveObject, FootprintBase):
"""
Generic class implementing a File.
"""
_collector = ('container', 'file')
_footprint = dict(
attr = dict(
filename = dict(
type = str,
alias = ('f',),
info = 'Relative or absolute pathname.')
)
)
def __init__(self, *args, **kwargs):
"""
Constructor. See its footprint for arguments.
"""
import os
# super to footprints constructor
super(File, self).__init__(*args, **kwargs)
# initialise absolute pathname
self._abspath = os.path.abspath(self.filename)
@property
[docs] def basename(self):
"""
Returns the basename of the file.
"""
import os
return os.path.basename(self._abspath)
@property
[docs] def abspath(self):
"""
Returns the absolute path of the file.
"""
return self._abspath
@property
[docs] def absdir(self):
"""
Returns the absolute path of the directory of the file.
"""
return self._abspath[:-len(self.basename)]