#!/usr/bin/env python # Filenames.py # Copyright (C) 2006 CCLRC, Graeme Winter # # This code is distributed under the BSD license, a copy of which is # included in the root directory of this package. # # An expert who knows about how file names are structured on a number of # platforms... this handles them mostly as strings, which of course they # are... # import os _original_wd = os.getcwd() def _pathsplit(path): head, tail = os.path.split(path) if tail: result = _pathsplit(head) result.append(tail) return result return [head] def pathsplit(path): return _pathsplit(os.path.normpath(path)) def windows_environment_vars_to_unix(token): '''Transmogrify windows environment tokens (e.g. %WINDIR%) to the UNIX form ($WINDIR) for python environment token replacement.''' if token.count('%') % 2: raise RuntimeError, 'must have even number of % tokens' in_env_variable = False token_list = token.split('%') result = '' for l in token_list: if not in_env_variable: result += l in_env_variable = True else: result += '$%s' % l in_env_variable = False return result def expand_path(path): '''Expand the input to give a full path.''' if path is None: return None if os.name == 'nt': return os.path.expandvars(os.path.expanduser( windows_environment_vars_to_unix(path))) else: return os.path.expandvars(os.path.expanduser(path)) if __name__ == '__main__': if os.name == 'nt': print expand_path(r'%USERPROFILE%\test') print expand_path(r'~\test') else: print expand_path(r'~\test')