That's inconsistent behaviour: os.listdir says directory/inaccessible.txt exists, while os.path.exists says it does not.
This can be solved simply be raising a PermissionError (or a subclass) for os.listdir when the directory is not executable.
I can't think of any situation outside of a CTF where it would be useful to be able to list the files in such directories.
Note that this is different from a directory with "-wx" permisions with a file secret.txt:
os.stat() and os.listdir() propagate errors from your operating system rather than raising OSError artificially. This is not a bug, and you'll need to gather support on the ideas forum first if you want to change it.
Activity
nineteendo commented on Mar 31, 2024
@eryksun, what do you think?
nineteendo commented on Mar 31, 2024
@terryjreedy, this is technically not related to pathlib. Though it would change the behaviour of pathlib.Path.iterdir().
barneygale commented on Mar 31, 2024
os.stat() and os.listdir() propagate errors from your operating system rather than raising OSError artificially. This is not a bug, and you'll need to gather support on the ideas forum first if you want to change it.