diff options
author | Raymond Hettinger <python@rcn.com> | 2003-12-31 22:44:29 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2003-12-31 22:44:29 (GMT) |
commit | 74bb7f03b1ff097d2e08544539549ec7283ffc75 (patch) | |
tree | e45d0a594b7bba6e906da703a60c3d4cac9b9abc /Lib | |
parent | 9b4dab4da1b02d4e89c3882cd779516cada3644f (diff) | |
download | cpython-74bb7f03b1ff097d2e08544539549ec7283ffc75.zip cpython-74bb7f03b1ff097d2e08544539549ec7283ffc75.tar.gz cpython-74bb7f03b1ff097d2e08544539549ec7283ffc75.tar.bz2 |
SF Patch 681780: Faster commonprefix (OS independent)
Improved based on discussions at:
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/252177
http://groups.google.com/groups?th=fc7b54f11af6b24e&seekm=bss2so$om$00$1@news.t-online.com
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/posixpath.py | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/Lib/posixpath.py b/Lib/posixpath.py index 7f907ef..7ee4911 100644 --- a/Lib/posixpath.py +++ b/Lib/posixpath.py @@ -123,16 +123,13 @@ def dirname(p): def commonprefix(m): "Given a list of pathnames, returns the longest common leading component" if not m: return '' - prefix = m[0] - for item in m: - for i in range(len(prefix)): - if prefix[:i+1] != item[:i+1]: - prefix = prefix[:i] - if i == 0: - return '' - break - return prefix - + s1 = min(m) + s2 = max(m) + n = min(len(s1), len(s2)) + for i in xrange(n): + if s1[i] != s2[i]: + return s1[:i] + return s1[:n] # Get size, mtime, atime of files. |