我尝试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'
我做错了什么,还是有更深层次的事情发生?
答案 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的句柄,因此这仍然是不可能的。