我在 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'
#