[Python-Dev] PEP 471 -- os.scandir() function -- a better and faster directory iterator (original) (raw)

Victor Stinner victor.stinner at gmail.com
Tue Jul 1 08:55:12 CEST 2014


2014-07-01 4:04 GMT+02:00 Glenn Linderman <v+python at g.nevcal.com>:

+0 for stat fields to be None on all platforms unless ensurelstat=True. This won't work well if lstat info is only needed for some entries. Is that a common use-case? It was mentioned earlier in the thread. If it is, use ensurelstat=False, and use the proposed (by me) .refresh() API to update the data for those that need it.

We should make DirEntry as simple as possible. In Python, the classic behaviour is to not define an attribute if it's not available on a platform. For example, stat().st_file_attributes is only available on Windows.

I don't like the idea of the ensure_lstat parameter because os.scandir would have to call two system calls, it makes harder to guess which syscall failed (readdir or lstat). If you need lstat on UNIX, write:

if hasattr(entry, 'lstat_result'): size = entry.lstat_result.st_size else: size = os.lstat(entry.fullname()).st_size

Victor



More information about the Python-Dev mailing list