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) ... - if followlinks or not islink(new_path): - for x in walk(new_path, topdown, onerror, followlinks): + if not skipdirs(new_path): + for x in walk(new_path, topdown, onerror, skipdirs): 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 _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com