Avoid import of string module; it is only needed for expandvars().

Never assume that os.sep is for the module-specific platform; use the
right separator character directly.
Fix some minor style consistency nits.
This commit is contained in:
Fred Drake 2000-09-28 16:25:20 +00:00
parent c0ab93ef6f
commit b4e460ac4b
3 changed files with 46 additions and 48 deletions

View File

@ -2,7 +2,6 @@
import os
import stat
import string
def normcase(s):
@ -15,7 +14,7 @@ def normcase(s):
single '_', but this has been removed. This functionality should
possibly be added as a new function."""
return string.lower(string.replace(s, "/", "\\"))
return s.replace("/", "\\").lower()
def isabs(s):
@ -39,7 +38,7 @@ def join(a, *p):
elif path == '' or path[-1:] in '/\\:':
path = path + b
else:
path = path + os.sep + b
path = path + "\\" + b
return path
@ -225,8 +224,6 @@ def expanduser(path):
return userhome + path[i:]
varchars = string.letters + string.digits + '_-'
def expandvars(path):
"""Expand paths containing shell variable substitutions.
The following rules apply:
@ -239,6 +236,8 @@ def expandvars(path):
if '$' not in path:
return path
import string
varchars = string.letters + string.digits + '_-'
res = ''
index = 0
pathlen = len(path)
@ -248,9 +247,9 @@ def expandvars(path):
path = path[index + 1:]
pathlen = len(path)
try:
index = string.index(path, '\'')
index = path.index('\'')
res = res + '\'' + path[:index + 1]
except string.index_error:
except ValueError:
res = res + path
index = pathlen -1
elif c == '$': # variable or '$$'
@ -261,11 +260,11 @@ def expandvars(path):
path = path[index+2:]
pathlen = len(path)
try:
index = string.index(path, '}')
index = path.index('}')
var = path[:index]
if os.environ.has_key(var):
res = res + os.environ[var]
except string.index_error:
except ValueError:
res = res + path
index = pathlen - 1
else:
@ -290,12 +289,12 @@ def normpath(path):
"""Normalize a path, e.g. A//B, A/./B and A/foo/../B all become A/B.
Also, components of the path are silently truncated to 8+3 notation."""
path = string.replace(path, "/", "\\")
path = path.replace("/", "\\")
prefix, path = splitdrive(path)
while path[:1] == os.sep:
prefix = prefix + os.sep
while path[:1] == "\\":
prefix = prefix + "\\"
path = path[1:]
comps = string.splitfields(path, os.sep)
comps = path.split("\\")
i = 0
while i < len(comps):
if comps[i] == '.':
@ -307,7 +306,7 @@ def normpath(path):
elif comps[i] == '' and i > 0 and comps[i-1] <> '':
del comps[i]
elif '.' in comps[i]:
comp = string.splitfields(comps[i], '.')
comp = comps[i].split('.')
comps[i] = comp[0][:8] + '.' + comp[1][:3]
i = i + 1
elif len(comps[i]) > 8:
@ -318,7 +317,7 @@ def normpath(path):
# If the path is now empty, substitute '.'
if not prefix and not comps:
comps.append('.')
return prefix + string.joinfields(comps, os.sep)
return prefix + "\\".join(comps)

View File

@ -1,13 +1,13 @@
"""Pathname and path-related operations for the Macintosh."""
import string
import os
from stat import *
# Normalize the case of a pathname. Dummy in Posix, but string.lower here.
# Normalize the case of a pathname. Dummy in Posix, but <s>.lower() here.
normcase = string.lower
def normcase(path):
return path.lower()
def isabs(s):
@ -175,7 +175,7 @@ def normpath(s):
if ":" not in s:
return ":"+s
comps = string.splitfields(s, ":")
comps = s.split(":")
i = 1
while i < len(comps)-1:
if comps[i] == "" and comps[i-1] != "":
@ -188,7 +188,7 @@ def normpath(s):
else:
i = i + 1
s = string.join(comps, ":")
s = ":".join(comps)
# remove trailing ":" except for ":" and "Volume:"
if s[-1] == ":" and len(comps) > 2 and s != ":"*len(s):

View File

@ -7,7 +7,6 @@ module as os.path.
import os
import stat
import string
# Normalize the case of a pathname and map slashes to backslashes.
@ -18,7 +17,7 @@ def normcase(s):
"""Normalize case of pathname.
Makes all characters lowercase and all slashes into backslashes."""
return string.lower(string.replace(s, "/", "\\"))
return s.replace("/", "\\").lower()
# Return whether a path is absolute.
@ -44,7 +43,7 @@ def join(a, *p):
elif path == '' or path[-1:] in '/\\:':
path = path + b
else:
path = path + os.sep + b
path = path + "\\" + b
return path
@ -77,11 +76,11 @@ def splitunc(p):
# \\machine\mountpoint\directories...
# directory ^^^^^^^^^^^^^^^
normp = normcase(p)
index = string.find(normp, '\\', 2)
index = normp.find('\\', 2)
if index == -1:
##raise RuntimeError, 'illegal UNC path: "' + p + '"'
return ("", p)
index = string.find(normp, '\\', index + 1)
index = normp.find('\\', index + 1)
if index == -1:
index = len(p)
return p[:index], p[index:]
@ -314,14 +313,14 @@ def expanduser(path):
# XXX With COMMAND.COM you can use any characters in a variable name,
# XXX except '^|<>='.
varchars = string.letters + string.digits + '_-'
def expandvars(path):
"""Expand shell variables of form $var and ${var}.
Unknown variables are left unchanged."""
if '$' not in path:
return path
import string
varchars = string.letters + string.digits + '_-'
res = ''
index = 0
pathlen = len(path)
@ -331,9 +330,9 @@ def expandvars(path):
path = path[index + 1:]
pathlen = len(path)
try:
index = string.index(path, '\'')
index = path.index('\'')
res = res + '\'' + path[:index + 1]
except string.index_error:
except ValueError:
res = res + path
index = pathlen - 1
elif c == '$': # variable or '$$'
@ -344,11 +343,11 @@ def expandvars(path):
path = path[index+2:]
pathlen = len(path)
try:
index = string.index(path, '}')
index = path.index('}')
var = path[:index]
if os.environ.has_key(var):
res = res + os.environ[var]
except string.index_error:
except ValueError:
res = res + path
index = pathlen - 1
else:
@ -375,12 +374,12 @@ def expandvars(path):
def normpath(path):
"""Normalize path, eliminating double slashes, etc."""
path = string.replace(path, "/", "\\")
path = path.replace("/", "\\")
prefix, path = splitdrive(path)
while path[:1] == os.sep:
prefix = prefix + os.sep
while path[:1] == "\\":
prefix = prefix + "\\"
path = path[1:]
comps = string.splitfields(path, os.sep)
comps = path.split("\\")
i = 0
while i < len(comps):
if comps[i] == '.':
@ -395,7 +394,7 @@ def normpath(path):
# If the path is now empty, substitute '.'
if not prefix and not comps:
comps.append('.')
return prefix + string.joinfields(comps, os.sep)
return prefix + "\\".join(comps)
# Return an absolute path.