Problem with directory recursion!
Robert Dailey
rcdailey at gmail.com
Fri Aug 17 15:11:54 EDT 2007
I figured it out.
I was doing a recursive function call when I didn't have to. The walk()
method already walks into every possible sub-directory for you!
On 8/17/07, Robert Dailey <rcdailey at gmail.com> wrote:
>
> Here's part of the output that's incorrect:
>
> models\W_BoomerEdge
> BYOS_C.entity.xml
> BYOS_C_Collision.entity.xml
>
> Notice that the file BYOS_C.entity.xml is showing up as a file in the
> directory W_BoomerEdge. This file does not exist in this folder, but yet in
> a different folder. The output is consistent with the 'print' statements you
> will see in the function I posted earlier.
>
> On 8/17/07, Robert Dailey <rcdailey at gmail.com> wrote:
> >
> > Hi,
> >
> > I've created a function that is used to recurse a directory tree in
> > Windows XP using os.walk(). For the most part it works, however in some
> > instances the data is incorrect and I'm getting invalid sub-directory paths.
> > Here's the function:
> >
> >
> > def __doSearch( root_dir, sub_path, restype, ext ):
> > print sub_path
> > # Searches the specified directory and generates a
> > # list of files to preload.
> > complete_path = osp.normpath( osp.join( root_dir, sub_path ) )
> > for root, dirs, files in os.walk( complete_path ):
> >
> > # Record the list of file hash ID's
> > for file in files:
> > split = __resType( file )
> > if split[1] == restype:
> > # print sub_path
> > print "\t", file
> > __appendResource( ext, sub_path, split[0] )
> >
> > # Remove .svn subdirectories; we don't walk these.
> > if ".svn" in dirs:
> > dirs.remove( ".svn" )
> >
> > # Recurse child directories
> > for dir in dirs:
> > __doSearch( root_dir, osp.join( sub_path, dir ), restype,
> > ext )
> >
> > Does anyone see anything immediately suspicious about the code? I'm
> > assuming that in Python, every time a function is called recursively it gets
> > its own copy of local variables. For some reason the sub_path variable isn't
> > consistent depending on where I use it. For example, if you notice the print
> > call at the very start of the function, it will output something like
> > "models/ships". However, after passing it into __appendResource(), it
> > appears to be just "models".
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20070817/5795ae66/attachment.html>
More information about the Python-list
mailing list