在Windows上的Python中,有没有办法确定用户是否有权访问目录?我已经看过了,os.access
但它给出了错误的结果.
>>> os.access('C:\haveaccess', os.R_OK) False >>> os.access(r'C:\haveaccess', os.R_OK) True >>> os.access('C:\donthaveaccess', os.R_OK) False >>> os.access(r'C:\donthaveaccess', os.R_OK) True
难道我做错了什么?有没有更好的方法来检查用户是否有权访问目录?
检查Windows中的权限可能很复杂(例如,请注意Vista中使用UAC的问题! - 请参阅此相关问题).
您是在谈论简单的读取访问,即读取目录的内容?测试权限的最可靠方法是尝试访问目录(例如,执行操作os.listdir
)并捕获异常.
此外,为了正确解释路径,您必须使用原始字符串或转义反斜杠('\\'), - 或使用正斜杠代替.
(编辑:你可以通过使用os.path.join
- 建议路径的建议方法完全避免斜线)
虽然os.access尽力告诉路径是否可访问,但它并不是完美的.从Python文档:
注意:即使access()表明它们会成功,I/O操作也可能失败,特别是对于可能具有超出通常POSIX权限位模型的权限语义的网络文件系统上的操作.
建议的方法来确定用户是否有权执行任何操作,并捕获发生的任何异常.