Kaydet (Commit) 4d0fdc34 authored tarafından Guido van Rossum's avatar Guido van Rossum

path.cat --> join

Added splitext
üst fbe0a8e0
...@@ -4,19 +4,24 @@ import posix ...@@ -4,19 +4,24 @@ import posix
import stat import stat
# Intelligent pathname concatenation. # Join two pathnames.
# Inserts a '/' unless the first part is empty or already ends in '/'. # Insert a '/' unless the first part is empty or already ends in '/'.
# Ignores the first part altogether if the second part is absolute # Ignore the first part altogether if the second part is absolute
# (begins with '/'). # (begins with '/').
# #
def cat(a, b): def join(a, b):
if b[:1] = '/': return b if b[:1] = '/': return b
if a = '' or a[-1:] = '/': return a + b if a = '' or a[-1:] = '/': return a + b
# Note: join('x', '') returns 'x/'; is this what we want?
return a + '/' + b return a + '/' + b
cat = join # For compatibility
# Split a path in head (empty or ending in '/') and tail (no '/'). # Split a path in head (empty or ending in '/') and tail (no '/').
# The tail will be empty if the path ends in '/'. # The tail will be empty if the path ends in '/'.
# It is always true that head+tail = p.
# #
def split(p): def split(p):
head, tail = '', '' head, tail = '', ''
...@@ -27,6 +32,23 @@ def split(p): ...@@ -27,6 +32,23 @@ def split(p):
return head, tail return head, tail
# Split a path in root and extension.
# The extension is everything starting at the first dot in the last
# pathname component; the root is everything before that.
# It is always true that root+ext = p.
#
def splitext(p):
root, ext = '', ''
for c in p:
if c = '/':
root, ext = root + ext + c, ''
elif c = '.' or ext:
ext = ext + c
else:
root = root + c
return root, ext
# Return the tail (basename) part of a path. # Return the tail (basename) part of a path.
# #
def basename(p): def basename(p):
...@@ -120,6 +142,6 @@ def walk(top, func, arg): ...@@ -120,6 +142,6 @@ def walk(top, func, arg):
exceptions = ('.', '..') exceptions = ('.', '..')
for name in names: for name in names:
if name not in exceptions: if name not in exceptions:
name = cat(top, name) name = join(top, name)
if isdir(name): if isdir(name):
walk(name, func, arg) walk(name, func, arg)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment