拒绝访问目录,但 os.stat(directory).st_mode 表示“其他人可以写”

问题描述 投票:0回答:0

我在 python 上使用 os 模块在 Windows 上创建文件查找器。为了不必以管理员身份使用命令,我在使用以下命令扫描之前检查目录是否具有所有读取权限:

is_acessible = bool(oct(os.stat(directory).st_mode & stat.S_IROTH)) #True if readable by others, false otherwise

到目前为止它一直有效,直到 %appdata% 中的文件夹,例如“/Application Data”。由于某种原因,他们具有扫描所需的权限,但输出权限被拒绝错误。我想了解问题所在,以及如何添加检查以防止扫描这些类型的目录。

这是检查目录可访问性的代码

#Adds a scanned directory to an array of sub directories if it has read permission for all
if is_acessible:
   sub_directories.append(entry.path) #entry is a confirmed directory that returned true for is_accessible
   if verbose:print(f"directory: {entry.name} found in {directory_name}\\-")
   continue

这是我得到的错误,请记住

C:/Users/Anon/AppData/Local/Application Data
is_acessible

返回 True
os.scandir(directory) as dir_contents# directory is "C:/Users/Anon/AppData/Local/Application Data"
#Output:
#   File "C:\Users\nolan\Documents\Scripts\Python\bin\find.py", line 35, in Scan
#   with os.scandir(directory) as dir_contents:
#   PermissionError: [WinError 5] Access is denied:  
#   'C:\\Users\\nolan\\AppData\\Local\\Application Data'
#
python windows permission-denied os.system
© www.soinside.com 2019 - 2024. All rights reserved.