summaryrefslogtreecommitdiff
path: root/fileutils.py
diff options
context:
space:
mode:
authorSylvain Th?nault <sylvain.thenault@logilab.fr>2010-09-15 14:50:50 +0200
committerSylvain Th?nault <sylvain.thenault@logilab.fr>2010-09-15 14:50:50 +0200
commit9e777836d0b6f51c0728ebe73e8b8d993ba16911 (patch)
treeb88aaebbf5bbccfbd4aa0f7a4eb7215cb198aa83 /fileutils.py
parent55b6e28c45a4aa6c9a29f63495fceb52d9a5a817 (diff)
downloadlogilab-common-9e777836d0b6f51c0728ebe73e8b8d993ba16911.tar.gz
[py3k] remove "os.path.walk" occurencies by using "os.path"
Diffstat (limited to 'fileutils.py')
-rw-r--r--fileutils.py60
1 files changed, 29 insertions, 31 deletions
diff --git a/fileutils.py b/fileutils.py
index 9ffd67c..86a83a4 100644
--- a/fileutils.py
+++ b/fileutils.py
@@ -28,9 +28,9 @@ __docformat__ = "restructuredtext en"
import sys
import shutil
import mimetypes
-from os.path import isabs, isdir, islink, split, exists, walk, normpath, join
+from os.path import isabs, isdir, islink, split, exists, normpath, join
from os.path import abspath
-from os import sep, mkdir, remove, listdir, stat, chmod
+from os import sep, mkdir, remove, listdir, stat, chmod, walk
from stat import ST_MODE, S_IWRITE
from cStringIO import StringIO
@@ -356,35 +356,34 @@ def export(from_dir, to_dir,
flag indicating whether information about exported files should be
printed to stderr, default to False
"""
- def make_mirror(_, directory, fnames):
- """walk handler"""
+ try:
+ mkdir(to_dir)
+ except OSError:
+ pass # FIXME we should use "exists" if the point is about existing dir
+ # else (permission problems?) shouldn't return / raise ?
+ for directory, dirnames, filenames in walk(from_dir):
for norecurs in blacklist:
try:
- fnames.remove(norecurs)
+ dirnames.remove(norecurs)
except ValueError:
continue
- for filename in fnames:
+ for dirname in dirnames:
+ src = join(directory, dirname)
+ dest = to_dir + src[len(from_dir):]
+ if isdir(src):
+ if not exists(dest):
+ mkdir(dest)
+ for filename in filenames:
# don't include binary files
- for ext in ignore_ext:
- if filename.endswith(ext):
- break
- else:
- src = join(directory, filename)
- dest = to_dir + src[len(from_dir):]
- if verbose:
- print >> sys.stderr, src, '->', dest
- if isdir(src):
- if not exists(dest):
- mkdir(dest)
- else:
- if exists(dest):
- remove(dest)
- shutil.copy2(src, dest)
- try:
- mkdir(to_dir)
- except OSError:
- pass
- walk(from_dir, make_mirror, None)
+ if filename.endswith(ignore_ext):
+ continue
+ src = join(directory, filename)
+ dest = to_dir + src[len(from_dir):]
+ if verbose:
+ print >> sys.stderr, src, '->', dest
+ if exists(dest):
+ remove(dest)
+ shutil.copy2(src, dest)
def remove_dead_links(directory, verbose=0):
@@ -398,12 +397,11 @@ def remove_dead_links(directory, verbose=0):
flag indicating whether information about deleted links should be
printed to stderr, default to False
"""
- def _remove_dead_link(_, directory, fnames):
- """walk handler"""
- for filename in fnames:
- src = join(directory, filename)
+ for dirpath, dirname, filenames in walk(directory):
+ for filename in dirnames + filenames:
+ src = join(dirpath, filename)
if islink(src) and not exists(src):
if verbose:
print 'remove dead link', src
remove(src)
- walk(directory, _remove_dead_link, None)
+