[Tutor] os.path.walk vs unix find command

Kent Johnson kent37 at tds.net
Sat Aug 16 05:13:33 CEST 2008


On Fri, Aug 15, 2008 at 6:17 PM, Angela Yang <angelayian at yahoo.com> wrote:
> Hi Python gurus:
>
> Is os.popen("find") faster or slower than os.path.walk to find file pattern
> in the
> directory tree?  I thought os.path.walk would be faster than unix find, but
> that doesn't
> seem to be the case?

In general a mature (i.e. optimized) C program is going to be faster
than a Python program to do the same task.

> What is the fastest way in python to search for a file with a given pattern
> in a directory
> tree?
>
> Here's the code using os.path.walk:

os.path.walk() is more-or-less obsolete, os.walk() does the same job
and is much easier to use. I don't know if it is any faster though.

If I understand your code, you want to find every file named src.mk
that is in a directory named src. With os.walk() it would look like
this:

for dirpath, dirnames, filenames in os.walk(component_dir):
  if dirpath.endswith('/src'):
    if 'src.mk' in filenames:
      walk_lst_result.append(os.path.join(dirpath, 'src.mk')
      # or just handle the file here, no need to make the list

Kent


More information about the Tutor mailing list