Remove os.path.walk

This commit is contained in:
Benjamin Peterson 2008-05-08 23:44:58 +00:00
parent 699adb9cd8
commit d71ca41b37
6 changed files with 7 additions and 128 deletions

View File

@ -261,30 +261,6 @@ write files see :func:`open`, and for accessing the filesystem see the
*unc* will always be the empty string. Availability: Windows. *unc* will always be the empty string. Availability: Windows.
.. function:: walk(path, visit, arg)
Calls the function *visit* with arguments ``(arg, dirname, names)`` for each
directory in the directory tree rooted at *path* (including *path* itself, if it
is a directory). The argument *dirname* specifies the visited directory, the
argument *names* lists the files in the directory (gotten from
``os.listdir(dirname)``). The *visit* function may modify *names* to influence
the set of directories visited below *dirname*, e.g. to avoid visiting certain
parts of the tree. (The object referred to by *names* must be modified in
place, using :keyword:`del` or slice assignment.)
.. note::
Symbolic links to directories are not treated as subdirectories, and that
:func:`walk` therefore will not visit them. To visit linked directories you must
identify them with ``os.path.islink(file)`` and ``os.path.isdir(file)``, and
invoke :func:`walk` as necessary.
.. note::
The newer :func:`os.walk` :term:`generator` supplies similar functionality
and can be easier to use.
.. data:: supports_unicode_filenames .. data:: supports_unicode_filenames
True if arbitrary Unicode strings can be used as file names (within limitations True if arbitrary Unicode strings can be used as file names (within limitations

View File

@ -8,7 +8,7 @@ from genericpath import *
__all__ = ["normcase","isabs","join","splitdrive","split","splitext", __all__ = ["normcase","isabs","join","splitdrive","split","splitext",
"basename","dirname","commonprefix","getsize","getmtime", "basename","dirname","commonprefix","getsize","getmtime",
"getatime","getctime", "islink","exists","lexists","isdir","isfile", "getatime","getctime", "islink","exists","lexists","isdir","isfile",
"walk","expanduser","expandvars","normpath","abspath", "expanduser","expandvars","normpath","abspath",
"curdir","pardir","sep","pathsep","defpath","altsep","extsep", "curdir","pardir","sep","pathsep","defpath","altsep","extsep",
"devnull","realpath","supports_unicode_filenames"] "devnull","realpath","supports_unicode_filenames"]
@ -154,33 +154,6 @@ def normpath(s):
s = s[:-1] s = s[:-1]
return s return s
def walk(top, func, arg):
"""Directory tree walk with callback function.
For each directory in the directory tree rooted at top (including top
itself, but excluding '.' and '..'), call func(arg, dirname, fnames).
dirname is the name of the directory, and fnames a list of the names of
the files and subdirectories in dirname (excluding '.' and '..'). func
may modify the fnames list in-place (e.g. via del or slice assignment),
and walk will only recurse into the subdirectories whose names remain in
fnames; this can be used to implement a filter, or to impose a specific
order of visiting. No semantics are defined for, or required of, arg,
beyond that arg is always passed to func. It can be used, e.g., to pass
a filename pattern, or a mutable object designed to accumulate
statistics. Passing None for arg is common."""
try:
names = os.listdir(top)
except os.error:
return
func(arg, top, names)
for name in names:
name = join(top, name)
if isdir(name) and not islink(name):
walk(name, func, arg)
def abspath(path): def abspath(path):
"""Return an absolute path.""" """Return an absolute path."""
if not isabs(path): if not isabs(path):

View File

@ -14,7 +14,7 @@ from genericpath import *
__all__ = ["normcase","isabs","join","splitdrive","split","splitext", __all__ = ["normcase","isabs","join","splitdrive","split","splitext",
"basename","dirname","commonprefix","getsize","getmtime", "basename","dirname","commonprefix","getsize","getmtime",
"getatime","getctime", "islink","exists","lexists","isdir","isfile", "getatime","getctime", "islink","exists","lexists","isdir","isfile",
"ismount","walk","expanduser","expandvars","normpath","abspath", "ismount", "expanduser","expandvars","normpath","abspath",
"splitunc","curdir","pardir","sep","pathsep","defpath","altsep", "splitunc","curdir","pardir","sep","pathsep","defpath","altsep",
"extsep","devnull","realpath","supports_unicode_filenames","relpath"] "extsep","devnull","realpath","supports_unicode_filenames","relpath"]
@ -226,40 +226,6 @@ def ismount(path):
return len(p) == 1 and p[0] in '/\\' return len(p) == 1 and p[0] in '/\\'
# Directory tree walk.
# For each directory under top (including top itself, but excluding
# '.' and '..'), func(arg, dirname, filenames) is called, where
# dirname is the name of the directory and filenames is the list
# of files (and subdirectories etc.) in the directory.
# The func may modify the filenames list, to implement a filter,
# or to impose a different order of visiting.
def walk(top, func, arg):
"""Directory tree walk with callback function.
For each directory in the directory tree rooted at top (including top
itself, but excluding '.' and '..'), call func(arg, dirname, fnames).
dirname is the name of the directory, and fnames a list of the names of
the files and subdirectories in dirname (excluding '.' and '..'). func
may modify the fnames list in-place (e.g. via del or slice assignment),
and walk will only recurse into the subdirectories whose names remain in
fnames; this can be used to implement a filter, or to impose a specific
order of visiting. No semantics are defined for, or required of, arg,
beyond that arg is always passed to func. It can be used, e.g., to pass
a filename pattern, or a mutable object designed to accumulate
statistics. Passing None for arg is common."""
try:
names = os.listdir(top)
except os.error:
return
func(arg, top, names)
for name in names:
name = join(top, name)
if isdir(name):
walk(name, func, arg)
# Expand paths beginning with '~' or '~user'. # Expand paths beginning with '~' or '~user'.
# '~' means $HOME; '~user' means that user's home directory. # '~' means $HOME; '~user' means that user's home directory.
# If the path doesn't begin with '~', or if the user or $HOME is unknown, # If the path doesn't begin with '~', or if the user or $HOME is unknown,

View File

@ -9,12 +9,12 @@ import os
import stat import stat
from genericpath import * from genericpath import *
from ntpath import (expanduser, expandvars, isabs, islink, splitdrive, from ntpath import (expanduser, expandvars, isabs, islink, splitdrive,
splitext, split, walk) splitext, split)
__all__ = ["normcase","isabs","join","splitdrive","split","splitext", __all__ = ["normcase","isabs","join","splitdrive","split","splitext",
"basename","dirname","commonprefix","getsize","getmtime", "basename","dirname","commonprefix","getsize","getmtime",
"getatime","getctime", "islink","exists","lexists","isdir","isfile", "getatime","getctime", "islink","exists","lexists","isdir","isfile",
"ismount","walk","expanduser","expandvars","normpath","abspath", "ismount","expanduser","expandvars","normpath","abspath",
"splitunc","curdir","pardir","sep","pathsep","defpath","altsep", "splitunc","curdir","pardir","sep","pathsep","defpath","altsep",
"extsep","devnull","realpath","supports_unicode_filenames"] "extsep","devnull","realpath","supports_unicode_filenames"]

View File

@ -18,7 +18,7 @@ from genericpath import *
__all__ = ["normcase","isabs","join","splitdrive","split","splitext", __all__ = ["normcase","isabs","join","splitdrive","split","splitext",
"basename","dirname","commonprefix","getsize","getmtime", "basename","dirname","commonprefix","getsize","getmtime",
"getatime","getctime","islink","exists","lexists","isdir","isfile", "getatime","getctime","islink","exists","lexists","isdir","isfile",
"ismount","walk","expanduser","expandvars","normpath","abspath", "ismount", "expanduser","expandvars","normpath","abspath",
"samefile","sameopenfile","samestat", "samefile","sameopenfile","samestat",
"curdir","pardir","sep","pathsep","defpath","altsep","extsep", "curdir","pardir","sep","pathsep","defpath","altsep","extsep",
"devnull","realpath","supports_unicode_filenames","relpath"] "devnull","realpath","supports_unicode_filenames","relpath"]
@ -193,44 +193,6 @@ def ismount(path):
return False return False
# Directory tree walk.
# For each directory under top (including top itself, but excluding
# '.' and '..'), func(arg, dirname, filenames) is called, where
# dirname is the name of the directory and filenames is the list
# of files (and subdirectories etc.) in the directory.
# The func may modify the filenames list, to implement a filter,
# or to impose a different order of visiting.
def walk(top, func, arg):
"""Directory tree walk with callback function.
For each directory in the directory tree rooted at top (including top
itself, but excluding '.' and '..'), call func(arg, dirname, fnames).
dirname is the name of the directory, and fnames a list of the names of
the files and subdirectories in dirname (excluding '.' and '..'). func
may modify the fnames list in-place (e.g. via del or slice assignment),
and walk will only recurse into the subdirectories whose names remain in
fnames; this can be used to implement a filter, or to impose a specific
order of visiting. No semantics are defined for, or required of, arg,
beyond that arg is always passed to func. It can be used, e.g., to pass
a filename pattern, or a mutable object designed to accumulate
statistics. Passing None for arg is common."""
try:
names = os.listdir(top)
except os.error:
return
func(arg, top, names)
for name in names:
name = join(top, name)
try:
st = os.lstat(name)
except os.error:
continue
if stat.S_ISDIR(st.st_mode):
walk(name, func, arg)
# Expand paths beginning with '~' or '~user'. # Expand paths beginning with '~' or '~user'.
# '~' means $HOME; '~user' means that user's home directory. # '~' means $HOME; '~user' means that user's home directory.
# If the path doesn't begin with '~', or if the user or $HOME is unknown, # If the path doesn't begin with '~', or if the user or $HOME is unknown,

View File

@ -24,6 +24,8 @@ Library
- The imputil module has been removed. - The imputil module has been removed.
- os.path.walk has been removed in favor of os.walk
Build Build
----- -----