I like the idea. I think an argument to os.walk() is the simplest option
for most users. But per some comments, "hidden" is actually more subtle
than the filesystem bit sometimes. I.e. dot-files, ~ suffix, maybe .bak,
etc.
I'd suggest meeting the ideas slightly and making the new argument 'filter'
or 'skip' that takes a callable. Default to None, but provide an
os.is_hidden that users don't need to figure out how to implement. E.g.
os.walk(PATH, skip=os.is_hidden)
os.walk(PATH, skip=lambda entry: entry.name.endswith(('~', '.bak', '.tmp')))
On Tue, May 8, 2018, 5:47 AM Oleg Broytman
Hi!
On Tue, May 08, 2018 at 07:12:35AM +0000, Yuval Greenfield < ubershmekel@gmail.com> wrote:
If you want to avoid duplicate `stat` calls, you'll probably write:
import os import stat def is_hidden(st): return bool(st.st_file_attributes & stat.FILE_ATTRIBUTE_HIDDEN) def visible_walk(path): for entry in os.scandir(path): if entry.is_dir(): if not is_hidden(entry.stat()): yield from visible_walk(entry.path) else: if not is_hidden(entry.stat()): yield entry.path
So anyone who wants to filter os.walk() must reimplement os.walk() themselves instead of passing something like filter_dir and filter_file (or accept_dir/accept_file) to os.walk()? Kind of painful, no?
Cheers, Yuval
Oleg. -- Oleg Broytman http://phdru.name/ phd@phdru.name Programmers don't die, they just GOSUB without RETURN. _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/