diff options
author | Christian Tismer <tismer@stackless.com> | 2013-10-22 02:09:28 (GMT) |
---|---|---|
committer | Christian Tismer <tismer@stackless.com> | 2013-10-22 02:09:28 (GMT) |
commit | 410d931a177af3253b7a360dc3d04f1ba57c294c (patch) | |
tree | 51a27517beff501d45e369442d3e2f166b85d2c0 /Lib/zipfile.py | |
parent | 8ed30c15e8491ba70ee1cc89acec569c72b2ce26 (diff) | |
download | cpython-410d931a177af3253b7a360dc3d04f1ba57c294c.zip cpython-410d931a177af3253b7a360dc3d04f1ba57c294c.tar.gz cpython-410d931a177af3253b7a360dc3d04f1ba57c294c.tar.bz2 |
add filtering of individual files to PyZipFile
changed output of debug messages to say "path" or "file"
extended test for filtering certain files in a package
added test for filtering files in a python dir (no package)
Diffstat (limited to 'Lib/zipfile.py')
-rw-r--r-- | Lib/zipfile.py | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/Lib/zipfile.py b/Lib/zipfile.py index b3554fb..ca2611d 100644 --- a/Lib/zipfile.py +++ b/Lib/zipfile.py @@ -1582,7 +1582,8 @@ class PyZipFile(ZipFile): """ if filterfunc and not filterfunc(pathname): if self.debug: - print('pathname "%s" skipped by filterfunc' % pathname) + label = 'path' if os.path.isdir(pathname) else 'file' + print('%s "%s" skipped by filterfunc' % (label, pathname)) return dir, name = os.path.split(pathname) if os.path.isdir(pathname): @@ -1611,6 +1612,10 @@ class PyZipFile(ZipFile): self.writepy(path, basename, filterfunc=filterfunc) # Recursive call elif ext == ".py": + if filterfunc and not filterfunc(path): + if self.debug: + print('file "%s" skipped by filterfunc' % path) + continue fname, arcname = self._get_codename(path[0:-3], basename) if self.debug: @@ -1624,6 +1629,10 @@ class PyZipFile(ZipFile): path = os.path.join(pathname, filename) root, ext = os.path.splitext(filename) if ext == ".py": + if filterfunc and not filterfunc(path): + if self.debug: + print('file "%s" skipped by filterfunc' % path) + continue fname, arcname = self._get_codename(path[0:-3], basename) if self.debug: |