os.access 返回 True,但文件不可写

时间:2021-02-03 21:28:15

标签: python file-permissions

我有这个代码:

import os

print(os.access("tst.txt", os.R_OK))
open("tst.txt", "rb")

# File Permissions:
# Owner: Trusted Installer
# Administrators and my user: deny all permissions

os.access 返回 True,但打开文件会引发 PermissionError 异常。

如果我在另一个文件(如 cmd.exe、notepad.exe、System32 目录本身或任何其他文件)上尝试这个,它总是返回 True。

如果文件不存在,则返回 False。

SO:True 在任何现有文件上。即使没有写权限。

我在 Internet 上找不到任何关于此的信息。

有人知道为什么会出现这个问题吗?

编辑: 当然,我的脚本不是以管理员身份运行的。

无论我是测试读访问还是写访问。

1 个答案:

答案 0 :(得分:2)

看起来 os.access 不检查 Windows 上的用户权限,它只检查是否设置了只读标志。

<块引用>

请注意,os.access 不会检查 Windows 上的文件安全性。 W_OK 只是检查只读标志。因此,如果您使用的是 Windows 并且不使用 Windows 安全 API,那么使用 try...except 确实是唯一的可能性。

来自http://net-informations.com/python/file/exists.htm

在这种情况下,您可能需要包装一个 try...除了您的代码