我正在尝试fsync一个目录,以确保执行重命名操作。我遇到的问题是,即使我对我尝试过的各种文件夹拥有完全权限,Python仍然返回权限错误。
directory = r'C:\Random\Path'
os.access(directory, os.W_OK)
os.access(directory, os.X_OK)
os.access(directory, os.R_OK)
True, True, True
fd = open(directory)
os.fsync(fd)
IOError: [Errno 13] Permission denied: 'C:\\Random\\Path'是我做错了什么,还是有更深层次的原因?
发布于 2016-06-23 09:38:32
内置的open()与os.open()不同。os.open()返回一个文件描述符(一个整数),但open()不返回。os.open()可以打开目录(至少在Linux上可以,我还没有尝试过Windows),但是open()不能。
发布于 2014-12-31 05:39:33
未执行fsync()调用。错误来自open()。为什么?因为您无法在Windows上打开目录。*
此行为为documented in MSDN
EACCES
试图打开一个只读文件进行写入,文件的共享模式不允许指定的操作,或给定的路径是一个目录。
(强调我的)。EACCES被拒绝权限;它正被用作compatibility reasons的通用“你不能这样做”错误。
*具体地说,您不能使用POSIX子系统打开目录;可以使用CreateFile在Windows上打开目录,但这会给您提供一个根据this list无法传递给FlushFileBuffers的句柄,因此这仍然是不可能的。
https://stackoverflow.com/questions/27709093
复制相似问题