mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
patch [ 1105730 ] Faster commonprefix in macpath, ntpath, etc.
This commit is contained in:
parent
b370059233
commit
649f8e7de2
5 changed files with 35 additions and 41 deletions
|
@ -175,14 +175,14 @@ def lexists(path):
|
|||
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]
|
||||
|
||||
|
||||
def expandvars(path):
|
||||
"""Dummy to retain interface-compatibility with other operating systems."""
|
||||
|
|
|
@ -212,14 +212,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.
|
||||
|
|
|
@ -173,14 +173,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.
|
||||
|
|
|
@ -168,23 +168,16 @@ def dirname(p):
|
|||
return split(p)[0]
|
||||
|
||||
|
||||
def commonprefix(ps):
|
||||
"""
|
||||
Return the longest prefix of all list elements. Purely string-based; does not
|
||||
separate any path parts. Why am I in os.path?
|
||||
"""
|
||||
if len(ps)==0:
|
||||
return ''
|
||||
prefix= ps[0]
|
||||
for p in ps[1:]:
|
||||
prefix= prefix[:len(p)]
|
||||
for i in range(len(prefix)):
|
||||
if prefix[i] <> p[i]:
|
||||
prefix= prefix[:i]
|
||||
if i==0:
|
||||
return ''
|
||||
break
|
||||
return prefix
|
||||
def commonprefix(m):
|
||||
"Given a list of pathnames, returns the longest common leading component"
|
||||
if not m: return ''
|
||||
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]
|
||||
|
||||
|
||||
## File access functions. Why are we in os.path?
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue