From 65ad043ea3c331ee41b19746f3a15b19bef2dab1 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Thu, 12 Oct 2006 13:08:16 +0000 Subject: [PATCH] Bug #1560179: speed up posixpath.(dir|base)name --- Lib/posixpath.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Lib/posixpath.py b/Lib/posixpath.py index 07ab4b672c7..15212366057 100644 --- a/Lib/posixpath.py +++ b/Lib/posixpath.py @@ -106,18 +106,23 @@ def splitdrive(p): return '', p -# Return the tail (basename) part of a path. +# Return the tail (basename) part of a path, same as split(path)[1]. def basename(p): """Returns the final component of a pathname""" - return split(p)[1] + i = p.rfind('/') + 1 + return p[i:] -# Return the head (dirname) part of a path. +# Return the head (dirname) part of a path, same as split(path)[0]. def dirname(p): """Returns the directory component of a pathname""" - return split(p)[0] + i = p.rfind('/') + 1 + head = p[:i] + if head and head != '/'*len(head): + head = head.rstrip('/') + return head # Is a path a symbolic link?