(paths)
Given a sequence of path names, returns the longest common sub-path.
Given a sequence of path names, returns the longest common sub-path.
Given a sequence of path names returns the longest common sub - path .
def commonpath(paths):
    """Given a sequence of path names, returns the longest common sub-path."""

    if not paths:
        raise ValueError('commonpath() arg is an empty sequence')

    paths = tuple(map(os.fspath, paths))
    if isinstance(paths[0], bytes):
        sep = b'/'
        curdir = b'.'
    else:
        sep = '/'
        curdir = '.'

    try:
        split_paths = [path.split(sep) for path in paths]

        try:
            isabs, = set(p[:1] == sep for p in paths)
        except ValueError:
            raise ValueError("Can't mix absolute and relative paths") from None

        split_paths = [[c for c in s if c and c != curdir] for s in split_paths]
        s1 = min(split_paths)
        s2 = max(split_paths)
        common = s1
        for i, c in enumerate(s1):
            if c != s2[i]:
                common = s1[:i]
                break

        prefix = sep if isabs else sep[:0]
        return prefix + sep.join(common)
    except (TypeError, AttributeError):
        genericpath._check_arg_types('commonpath', *paths)
        raise
def commonpath ( paths ) : if not paths : raise ValueError ( 'commonpath() arg is an empty sequence' ) paths = tuple ( map ( os . fspath , paths ) ) if isinstance ( paths [ 0 ] , bytes ) : sep = b'/' curdir = b'.' else : sep = '/' curdir = '.' try : split_paths = [ path . split ( sep ) for path in paths ] try : isabs , = set ( p [ : 1 ] == sep for p in paths ) except ValueError : raise ValueError ( "Can't mix absolute and relative paths" ) from None split_paths = [ [ c for c in s if c and c != curdir ] for s in split_paths ] s1 = min ( split_paths ) s2 = max ( split_paths ) common = s1 for i , c in enumerate ( s1 ) : if c != s2 [ i ] : common = s1 [ : i ] break prefix = sep if isabs else sep [ : 0 ] return prefix + sep . join ( common ) except ( TypeError , AttributeError ) : genericpath . _check_arg_types ( 'commonpath' , * paths ) raise