我试图为一个目录获取文件描述符,但是在目录上调用os.open
总是会导致"权限被拒绝"的错误。
我不认为这是一个权限问题,因为它发生在所有目录上,而在文件上没有问题(请参见下面的REPL会话)。以管理员身份运行也没有任何区别。
Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.mkdir('mydir')
>>> os.access('mydir', os.F_OK)
True
>>> os.access('mydir', os.R_OK)
True
>>> os.access('.', os.R_OK)
True
>>> os.access('.', os.F_OK)
True
>>> os.open('myfile', os.O_RDWR)
3
>>> os.open('mydir', os.O_RDONLY)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 13] Permission denied: 'mydir'
>>> os.open('mydir', os.O_RDWR)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 13] Permission denied: 'mydir'
>>> open('mydir')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 13] Permission denied: 'mydir'
在 Linux 上,它按预期运行:
>>> os.open('mydir', os.O_RDONLY)
3
文档没有说明不能在任何平台上获取目录的文件描述符。这是期望的行为吗?在Windows上无法获取目录的文件描述符吗?