-
-
Notifications
You must be signed in to change notification settings - Fork 33.1k
Description
Documentation
Many functions in os
do not properly specify whether or not they follow symlinks. The Files and Directories even slightly implies that the default is more to follow symlinks (and only with follow_symlinks=False
not).
For some functions (like os.rmdir()
one might argue this is not important because they're the counterparts of well-known POSIX/C functions and for them it's well-defined.
But e.g. os.removedirs()
seem to have no such counterpart and since the documentation doesn't mention anything, the current behaviour (which AFAICS is not following symlinks) might just be some implementation detail.
For os.removedirs()
there are even two interesting cases in e.g. os.removedirs("a/b/c/d")
:
- if
d
(i.e. the final pathname component) is a symlink to a directory the referred directory is not removed (at least not in the current code, which usesos.rmdir()
on the pathname) - if e.g.
b
is a symlink to a directory, which contains onlyc/d
, thenb
is followed whenrmdir
inga/b/c/d
anda/b/c
but is not followed whenrmdir
inga/b
(and the target ofb
isn’t removed).
All this kinda follows the spirit of POSIX' pathname resolution, but still it would IMO be nice to have it clearly defined.
Cheers,
Chris.
Metadata
Metadata
Assignees
Labels
Projects
Status