mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
gh-117607: Speedup os.path.relpath() (GH-117608)
This commit is contained in:
parent
424438b11e
commit
a7711a2a4e
3 changed files with 16 additions and 12 deletions
|
@ -532,15 +532,17 @@ def relpath(path, start=None):
|
|||
start = os.fspath(start)
|
||||
|
||||
try:
|
||||
start_list = [x for x in abspath(start).split(sep) if x]
|
||||
path_list = [x for x in abspath(path).split(sep) if x]
|
||||
start_tail = abspath(start).lstrip(sep)
|
||||
path_tail = abspath(path).lstrip(sep)
|
||||
start_list = start_tail.split(sep) if start_tail else []
|
||||
path_list = path_tail.split(sep) if path_tail else []
|
||||
# Work out how much of the filepath is shared by start and path.
|
||||
i = len(commonprefix([start_list, path_list]))
|
||||
|
||||
rel_list = [pardir] * (len(start_list)-i) + path_list[i:]
|
||||
if not rel_list:
|
||||
return curdir
|
||||
return join(*rel_list)
|
||||
return sep.join(rel_list)
|
||||
except (TypeError, AttributeError, BytesWarning, DeprecationWarning):
|
||||
genericpath._check_arg_types('relpath', path, start)
|
||||
raise
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue