diff options
author | willmcgugan <willmcgugan@67cdc799-7952-0410-af00-57a81ceafa0f> | 2008-08-01 16:28:27 +0000 |
---|---|---|
committer | willmcgugan <willmcgugan@67cdc799-7952-0410-af00-57a81ceafa0f> | 2008-08-01 16:28:27 +0000 |
commit | 563213f386e32d743959bf092192257c4dbe72aa (patch) | |
tree | d9a101c3b9a466aaafb8b7499ee4b267c51ee6ea /fs/multifs.py | |
parent | 63ccf2cdd900b709622661d083aabd1f1735a250 (diff) | |
download | pyfilesystem-git-563213f386e32d743959bf092192257c4dbe72aa.tar.gz |
Tidied up the code, and added an ObjectTree class
Diffstat (limited to 'fs/multifs.py')
-rw-r--r-- | fs/multifs.py | 38 |
1 files changed, 11 insertions, 27 deletions
diff --git a/fs/multifs.py b/fs/multifs.py index fb36c18..da607bd 100644 --- a/fs/multifs.py +++ b/fs/multifs.py @@ -11,43 +11,34 @@ class MultiFS(FS): self.fs_lookup = {} def __str__(self): - return "<MultiFS: %s>" % ", ".join(str(fs) for fs in self.fs_sequence) - def addfs(self, name, fs): - if name in self.fs_lookup: raise ValueError("Name already exists.") self.fs_sequence.append(fs) self.fs_lookup[name] = fs - def removefs(self, name): - fs = self.fs_lookup[name] self.fs_sequence.remove(fs) del self.fs_lookup[name] def __getitem__(self, name): - return self.fs_lookup[name] def __iter__(self): - return iter(self.fs_sequence) def _delegate_search(self, path): - for fs in self: if fs.exists(path): return fs return None def which(self, path): - for fs in self: if fs.exists(path): for fs_name, fs_object in self.fs_lookup.iteritems(): @@ -55,18 +46,14 @@ class MultiFS(FS): return fs_name, fs return None, None - def getsyspath(self, path): - fs = self._delegate_search(path) if fs is not None: return fs.getsyspath(path) - raise FSError("NO_FILE", path) - + raise ResourceNotFoundError("NO_FILE", path) def desc(self, path): - if not self.exists(path): raise FSError("NO_RESOURCE", path) @@ -78,41 +65,35 @@ class MultiFS(FS): def open(self, path, mode="r", buffering=-1, **kwargs): - for fs in self: if fs.exists(path): fs_file = fs.open(path, mode, buffering, **kwargs) return fs_file - raise FSError("NO_FILE", path) + raise ResourceNotFoundError("NO_FILE", path) def exists(self, path): - return self._delegate_search(path) is not None def isdir(self, path): - fs = self._delegate_search(path) if fs is not None: return fs.isdir(path) return False def isfile(self, path): - fs = self._delegate_search(path) if fs is not None: return fs.isfile(path) return False def ishidden(self, path): - fs = self._delegate_search(path) if fs is not None: return fs.isfile(path) return False def listdir(self, path="./", *args, **kwargs): - paths = [] for fs in self: try: @@ -123,29 +104,32 @@ class MultiFS(FS): return list(set(paths)) def remove(self, path): - for fs in self: if fs.exists(path): fs.remove(path) return - raise FSError("NO_FILE", path) + raise ResourceNotFoundError("NO_FILE", path) def removedir(self, path, recursive=False): - for fs in self: if fs.isdir(path): fs.removedir(path, recursive) return - raise FSError("NO_DIR", path) + raise ResourceNotFoundError("NO_DIR", path) + def rename(self, src, dst): + for fs in self: + if fs.exists(src): + fs.rename(src, dst) + return + raise FSError("NO_RESOURCE", path) def getinfo(self, path): - for fs in self: if fs.exists(path): return fs.getinfo(path) - raise FSError("NO_FILE", path) + raise ResourceNotFoundError("NO_FILE", path) if __name__ == "__main__": |