def file_node(self, name, path, parent, storagepath): '''create a new node representing a file''' if not os.path.exists(path): Logger.err('File \"{}\" does not exist'.format(path)) return None path = os.path.abspath(path) try: st = os.lstat(path) except OSError as e: Logger.err('OSError: {}'.format(e)) return None md5 = None if self.hash: md5 = utils.md5sum(path) relpath = os.path.join(os.path.basename(storagepath), os.path.relpath(path, start=storagepath)) maccess = os.path.getmtime(path) n = self._node(name, self.TYPE_FILE, relpath, parent, size=st.st_size, md5=md5, maccess=maccess) if self.arc: ext = os.path.splitext(path)[1][1:] if ext in self.decomp.get_format(): names = self.decomp.get_names(path) self.list_to_tree(n, names) return n
def _get_hash(self, path): """return md5 hash of node""" return utils.md5sum(path)