You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Support for file descriptor params in os.path #76052
Since Python 3.3, some os module functions, like os.stat (https://docs.python.org/3/library/os.html#os.stat), support passing file descriptor instead of a path. os.path functions, on the other hand (like os.path.exists - https://docs.python.org/3/library/os.path.html#os.path.exists - or os.path.samefile - https://docs.python.org/3/library/os.path.html#os.path.samefile) mention using os.stat underneath, but according to documentation, does not support passing file descriptor instead of a path (at least it's not mentioned in the docs that this feature is supported). Is this intentional (os.path functions should not take file descriptor params) or this feature is officialy supported, but it's ommited in the docs?
support passing file descriptor instead of a path. os.path functions
Are you sure about that? The docs for os.stat show the dir_fd parameter, used to avoid directory renaming issues or attacks, but it doesn’t say that the *path* argument can be an int file descriptor instead of a str file path.
Yes, now some os.path functions can accept a file descriptor as a path. I don't think this is intentional. And this may not work on all platforms.
>>> os.path.isdir(1)
False
>>> os.path.islink(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/serhiy/py/cpython/Lib/posixpath.py", line 169, in islink
st = os.lstat(path)
TypeError: lstat: path should be string, bytes or os.PathLike, not int
Activity
MateuszKurek commentedon Oct 26, 2017
Since Python 3.3, some os module functions, like os.stat (https://docs.python.org/3/library/os.html#os.stat), support passing file descriptor instead of a path. os.path functions, on the other hand (like os.path.exists - https://docs.python.org/3/library/os.path.html#os.path.exists - or os.path.samefile - https://docs.python.org/3/library/os.path.html#os.path.samefile) mention using os.stat underneath, but according to documentation, does not support passing file descriptor instead of a path (at least it's not mentioned in the docs that this feature is supported). Is this intentional (os.path functions should not take file descriptor params) or this feature is officialy supported, but it's ommited in the docs?
merwok commentedon Oct 27, 2017
Are you sure about that? The docs for os.stat show the dir_fd parameter, used to avoid directory renaming issues or attacks, but it doesn’t say that the *path* argument can be an int file descriptor instead of a str file path.
serhiy-storchaka commentedon Oct 28, 2017
Éric, see https://docs.python.org/3/library/os.html#files-and-directories.
Yes, now some os.path functions can accept a file descriptor as a path. I don't think this is intentional. And this may not work on all platforms.