[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
- Previous message: [Python-Dev] PyPI went down
- Next message: [Python-Dev] Coding guidelines for os.walk filter
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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
- Previous message: [Python-Dev] PyPI went down
- Next message: [Python-Dev] Coding guidelines for os.walk filter
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]