我有这个代码:
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 上找不到任何关于此的信息。
有人知道为什么会出现这个问题吗?
编辑: 当然,我的脚本不是以管理员身份运行的。
无论我是测试读访问还是写访问。
答案 0 :(得分:2)
看起来 os.access
不检查 Windows 上的用户权限,它只检查是否设置了只读标志。
请注意,os.access 不会检查 Windows 上的文件安全性。 W_OK 只是检查只读标志。因此,如果您使用的是 Windows 并且不使用 Windows 安全 API,那么使用 try...except 确实是唯一的可能性。
来自http://net-informations.com/python/file/exists.htm
在这种情况下,您可能需要包装一个 try...除了您的代码