[Python-Dev] Updates to PEP 471, the os.scandir() proposal (original) (raw)

Ben Hoyt benhoyt at gmail.com
Tue Jul 8 20:03:00 CEST 2014


I remember a pending question on python-dev:

- Martin von Loewis asked if the scandir generator would have send() and close() methods as any Python generator. I didn't see a reply on the mailing (nor in the PEP).

Good call. Looks like you're referring to this message: https://mail.python.org/pipermail/python-dev/2014-July/135324.html

I'm not actually familiar with the purpose of .close() and .send()/.throw() on generators. Do you typically call these functions manually, or are they called automatically by the generator protocol?

It is not clear to me which methods share the cache.

On UNIX, isdir() and isfile() call os.stat(); whereas lstat() and issymlink() call os.lstat(). If os.stat() says that the file is not a symlink, I guess that you can use os.stat() result for lstat() and issymlink() methods? In the worst case, if the path is a symlink, would it be possible that os.stat() and os.lstat() become "inconsistent" if the symlink is modified between the two calls? If yes, I don't think that it's an issue, it's just good to know it. For symlinks, readdir() returns the status of the linked file or of the symlink?

I think you're misunderstanding is_dir() and is_file(), as these don't actually call os.stat(). All DirEntry methods either call nothing or os.lstat() to get the stat info on the entry itself (not the destination of the symlink). In light of this, I don't think what you're describing above is an issue.

-Ben



More information about the Python-Dev mailing list