尝试fsync目录时出错

时间:2014-12-30 16:35:46

标签: python python-2.7

我尝试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'

我做错了什么,还是有更深层次的事情发生?

2 个答案:

答案 0 :(得分:2)

内置的open()与os.open()不同。 os.open()返回文件描述符(整数),但open()不返回。 os.open()可以打开目录(至少在Linux上它可以,我没试过Windows),但是open()不能。

答案 1 :(得分:0)

fsync()来电未被执行。错误来自open()。为什么?因为您无法在Windows上打开目录。*

此行为为documented in MSDN

  

<强> EACCES

     
    

试图打开一个只读文件进行写入,文件的共享模式不允许指定的操作,或给定的路径是目录。

  

(强调我的)。 EACCES被许可拒绝;它被{ab}用作compatibility reasons的一般用途“你无法做到”的错误。


*具体来说,您无法使用POSIX子系统打开目录;可以使用CreateFile在Windows上打开目录,但这会为您提供根据FlushFileBuffers无法传递到this list的句柄,因此这仍然是不可能的。