mirror of
https://github.com/python/cpython.git
synced 2025-09-27 10:50:04 +00:00
path.cat --> join
Added splitext
This commit is contained in:
parent
fbe0a8e090
commit
4d0fdc34d1
1 changed files with 27 additions and 5 deletions
|
@ -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):
|
||||||
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):
|
||||||
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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue