aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/distutils/dir_util.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/distutils/dir_util.py')
-rw-r--r--Lib/distutils/dir_util.py37
1 files changed, 17 insertions, 20 deletions
diff --git a/Lib/distutils/dir_util.py b/Lib/distutils/dir_util.py
index 5026e246685..2826ff805d7 100644
--- a/Lib/distutils/dir_util.py
+++ b/Lib/distutils/dir_util.py
@@ -2,9 +2,7 @@
Utility functions for manipulating directories and directory trees."""
-__revision__ = "$Id$"
-
-import os
+import os, sys
import errno
from distutils.errors import DistutilsFileError, DistutilsInternalError
from distutils import log
@@ -16,7 +14,7 @@ _path_created = {}
# I don't use os.makedirs because a) it's new to Python 1.5.2, and
# b) it blows up if the directory already exists (I want to silently
# succeed in that case).
-def mkpath(name, mode=0777, verbose=1, dry_run=0):
+def mkpath(name, mode=0o777, verbose=1, dry_run=0):
"""Create a directory and any missing ancestor directories.
If the directory already exists (or if 'name' is the empty string, which
@@ -30,9 +28,9 @@ def mkpath(name, mode=0777, verbose=1, dry_run=0):
global _path_created
# Detect a common bug -- name is None
- if not isinstance(name, basestring):
- raise DistutilsInternalError, \
- "mkpath: 'name' must be a string (got %r)" % (name,)
+ if not isinstance(name, str):
+ raise DistutilsInternalError(
+ "mkpath: 'name' must be a string (got %r)" % (name,))
# XXX what's the better way to handle verbosity? print as we create
# each directory in the path (the current behaviour), or only announce
@@ -70,7 +68,7 @@ def mkpath(name, mode=0777, verbose=1, dry_run=0):
if not dry_run:
try:
os.mkdir(head, mode)
- except OSError, exc:
+ except OSError as exc:
if not (exc.errno == errno.EEXIST and os.path.isdir(head)):
raise DistutilsFileError(
"could not create '%s': %s" % (head, exc.args[-1]))
@@ -79,7 +77,7 @@ def mkpath(name, mode=0777, verbose=1, dry_run=0):
_path_created[abs_head] = 1
return created_dirs
-def create_tree(base_dir, files, mode=0777, verbose=1, dry_run=0):
+def create_tree(base_dir, files, mode=0o777, verbose=1, dry_run=0):
"""Create all the empty directories under 'base_dir' needed to put 'files'
there.
@@ -90,14 +88,12 @@ def create_tree(base_dir, files, mode=0777, verbose=1, dry_run=0):
'dry_run' flags are as for 'mkpath()'.
"""
# First get the list of directories to create
- need_dir = {}
+ need_dir = set()
for file in files:
- need_dir[os.path.join(base_dir, os.path.dirname(file))] = 1
- need_dirs = need_dir.keys()
- need_dirs.sort()
+ need_dir.add(os.path.join(base_dir, os.path.dirname(file)))
# Now create them
- for dir in need_dirs:
+ for dir in sorted(need_dir):
mkpath(dir, mode, verbose=verbose, dry_run=dry_run)
def copy_tree(src, dst, preserve_mode=1, preserve_times=1,
@@ -124,16 +120,17 @@ def copy_tree(src, dst, preserve_mode=1, preserve_times=1,
from distutils.file_util import copy_file
if not dry_run and not os.path.isdir(src):
- raise DistutilsFileError, \
- "cannot copy tree '%s': not a directory" % src
+ raise DistutilsFileError(
+ "cannot copy tree '%s': not a directory" % src)
try:
names = os.listdir(src)
- except os.error, (errno, errstr):
+ except os.error as e:
+ (errno, errstr) = e
if dry_run:
names = []
else:
- raise DistutilsFileError, \
- "error listing files in '%s': %s" % (src, errstr)
+ raise DistutilsFileError(
+ "error listing files in '%s': %s" % (src, errstr))
if not dry_run:
mkpath(dst, verbose=verbose)
@@ -201,7 +198,7 @@ def remove_tree(directory, verbose=1, dry_run=0):
abspath = os.path.abspath(cmd[1])
if abspath in _path_created:
del _path_created[abspath]
- except (IOError, OSError), exc:
+ except (IOError, OSError) as exc:
log.warn(grok_environment_error(
exc, "error removing %s: " % directory))