]> granicus.if.org Git - python/commitdiff
join(): join one or more path components
authorBarry Warsaw <barry@python.org>
Tue, 18 Feb 1997 21:53:25 +0000 (21:53 +0000)
committerBarry Warsaw <barry@python.org>
Tue, 18 Feb 1997 21:53:25 +0000 (21:53 +0000)
Lib/macpath.py
Lib/ntpath.py
Lib/posixpath.py

index c45ecbf50496a2448466d933c283a56d7173eb5b..a6cf66b19ff3c78d8616c3600d866de29d8a2577 100644 (file)
@@ -20,18 +20,24 @@ def isabs(s):
        return ':' in s and s[0] <> ':'
 
 
-# Join two pathnames.
-# The result is equivalent to what the second pathname would refer to
-# if the first pathname were the current directory.
-
-def join(s, t):
-       if (not s) or isabs(t): return t
-       if t[:1] == ':': t = t[1:]
-       if ':' not in s:
-               s = ':' + s
-       if s[-1:] <> ':':
-               s = s + ':'
-       return s + t
+# Join pathnames.
+# Ignore the previous parts if a part is absolute.
+# Insert a '/' unless the first part is empty or already ends in '/'.
+
+def join(s, *p):
+       path = s
+       for t in p:
+               if (not s) or isabs(t):
+                       path = t
+                       continue
+               if t[:1] == ':':
+                       t = t[1:]
+               if ':' not in path:
+                       path = ':' + path
+               if path[-1:] <> ':':
+                       path = path + ':'
+               path = path + t
+       return path
 
 
 # Split a pathname in two parts: the directory leading up to the final bit,
index 6a77ec849be98f9f15600974343d0453ecd97c80..d3951545e411350d260a2bd0ba84f622f0769b7b 100644 (file)
@@ -34,15 +34,20 @@ def isabs(s):
        return s != '' and s[:1] in '/\\'
 
 
-# Join two pathnames.
-# Ignore the first part if the second part is absolute.
+# Join pathnames.
+# Ignore the previous parts if a part is absolute.
 # Insert a '/' unless the first part is empty or already ends in '/'.
 
-def join(a, b):
-       if isabs(b): return b
-       if a == '' or a[-1:] in '/\\': return a + b
-       # Note: join('x', '') returns 'x/'; is this what we want?
-       return a + os.sep + b
+def join(a, *p):
+       path = a
+       for b in p:
+               if isabs(b):
+                       path = b
+               elif path == '' or path[-1:] in '/\\':
+                       path = path + b
+               else:
+                       path = path + os.sep + b
+       return path
 
 
 # Split a path in a drive specification (a drive letter followed by a
index 014dfe2798390f5e1058e3d561906c38a3c88863..965184bc3c9a464b283e2182d742e2e5c623facb 100644 (file)
@@ -26,15 +26,20 @@ def isabs(s):
        return s[:1] == '/'
 
 
-# Join two pathnames.
-# Ignore the first part if the second part is absolute.
+# Join pathnames.
+# Ignore the previous parts if a part is absolute.
 # Insert a '/' unless the first part is empty or already ends in '/'.
 
-def join(a, b):
-       if b[:1] == '/': return b
-       if a == '' or a[-1:] == '/': return a + b
-       # Note: join('x', '') returns 'x/'; is this what we want?
-       return a + '/' + b
+def join(a, *p):
+       path = a
+       for b in p:
+               if b[:1] == '/':
+                       path = b
+               elif path == '' or path[-1:] == '/':
+                       path = path + b
+               else:
+                       path = path + '/' + b
+       return path
 
 
 # Split a path in head (everything up to the last '/') and tail (the