[Python-Dev] A wart which should have been repaired in 3.0?

Phillip J. Eby pje at telecommunity.com
Wed Dec 31 05:11:34 CET 2008

At 08:57 PM 12/30/2008 -0600, skip at pobox.com wrote:

>     Phillip> At 02:32 PM 12/30/2008 -0800, Scott David Daniels wrote:
>     >> More trouble with the "just take the dirname":
>     >>
>     >> paths = ['/a/b/c', '/a/b/d', '/a/b']
>     >> os.path.dirname(os.path.commonprefix([
>     >> os.path.normpath(p) for p in paths]))
>     >>
>     >> give '/a', not '/a/b'.
>     Phillip> ...because that's the correct answer.
>I don't understand.  If you search for os.path.commonprefix at
>codesearch.google.com you'll find uses like this:
>     if os.path.commonprefix([basedir, somepath]) != basedir:
>         ...
>which leads me to believe that other people using the current function in
>the real world would be confused by your interpretation.

It never would've occurred to me to use it for that, versus checking 
for somepath.startswith(basedir+sep).

The only thing I've ever used commonprefix for is to find the 
most-specific directory that contains all the specified paths.  Never 
occurred to me that there was any other use for it, actually.

More information about the Python-Dev mailing list