[Python-Dev] Coding guidelines for os.walk filter (original) (raw)

Jacek Pliszka jacek.pliszka at gmail.com
Wed Aug 31 00:35:37 CEST 2011


Hi!

I would like to get some opinion on possible os.walk improvement. For the sake of simplicity let's assume I would like to skip all .svn and tmp directories.

Current solution looks like this:

for t in os.walk(somedir): t[1][:]=set(t[1])-{'.svn','tmp'} ... do something

This is a very clever hack but... it relies on internal implementation of os.walk....

Alternative is adding os.walk parameter e.g. like this:

def walk(top, topdown=True, onerror=None, followlinks=False, walkfilter=None) .... if walkfilter is not None: dirs,nondirs=walkfilter(top,dirs,nondirs) ..... and remove .svn and tmp in the walkfilter definition.

What I do not like here is that followlinks is redundant - easily implementable through walkfilter

Simpler but braking backward-compatibility option would be:

def walk(top, topdown=True, onerror=None, skipdirs=islink) ...

And user given skipdirs function should return true for new_path ending in .svn or tmp

Nothing is redundant and works fine with topdown=False!

What do you think? Shall we: a) do nothing and use the implicit hack b) make the option explicit with backward compatibility but with redundancy and topdown=False incompatibility c) make the option explicit braking backward compatibility but no redundancy

Best Regards,

Jacek Pliszka



More information about the Python-Dev mailing list