[path-PEP] Path inherits from basestring again

Reinhold Birkenfeld reinhold-birkenfeld-nospam at wolke7.net
Sat Jul 30 19:01:49 CEST 2005


phil hunt wrote:

> def normalizePath(p, *pathParts):
>    """ Normalize a file path, by expanding the user name and getting 
>    the absolute path..
>    @param p [string] = a path to a file or directory
>    @param pathParts [list of string] = optional path parts
>    @return [string] = the same path, normalized
>    """
>    p1 = os.path.abspath(os.path.expanduser(p))
>    if len(pathParts)>0:
>       allPathParts = [ p1 ]
>       allPathParts.extend(pathParts)
>       p1 = os.path.join(*allPathParts)
>    p2 = os.path.abspath(p1)   
>    return p2
> normalisePath=normalizePath # alternate spelling 
> join=normalizePath # it works like os.path.join, but better  
> 
> 
> To be honest I don't see the point of having a Path class. That's 
> the way Java does it, and I find path handling in Java to be a lot 
> more of a hassle than in Python. (Actually, most things are more of 
> a hassle in Java, but that's another story).

You see, with the Path class the above function could be written as

def normalizePath(p, *pathParts):
    """ Normalize a file path, by expanding the user name and getting
    the absolute path..
    @param p [Path] = a path to a file or directory
    @param pathParts [list of string/Path] = optional path parts
    @return [Path] = the same path, normalized
    """
    tp = p.expanduser().abspath()
    return tp.joinwith(*pathParts).abspath()

That's clearly an improvement, isn't it?

Reinhold



More information about the Python-list mailing list