diff options
Diffstat (limited to 'Lib/distutils/dir_util.py')
-rw-r--r-- | Lib/distutils/dir_util.py | 37 |
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)) |