如何在Python 3.10.x中使用os.scandir()忽略隐藏文件夹?
用Python过滤C盘隐藏文件夹
用os.scandir()遍历目录时,它返回的DirEntry对象已经自带了文件属性数据,在Windows下直接用这个属性就能快速判断文件夹是否隐藏,不用额外调用stat()拖慢速度。
直接用下面的代码就能只输出非隐藏的文件夹路径:
import os # Windows系统中隐藏文件的属性常量 FILE_ATTRIBUTE_HIDDEN = 0x02 for entry in os.scandir('C:/'): # 先确认是文件夹,再排除带隐藏属性的项 if entry.is_dir(follow_symlinks=False) and not (entry.attributes & FILE_ATTRIBUTE_HIDDEN): print(entry.path)
关键细节:
entry.is_dir(follow_symlinks=False):仅处理真实文件夹,跳过符号链接,避免误判- 通过位运算
entry.attributes & FILE_ATTRIBUTE_HIDDEN判断隐藏属性:结果非零则为隐藏文件夹,直接排除 - 利用
DirEntry缓存的attributes属性,比单独调用stat()更高效,减少系统调用开销
内容的提问来源于stack exchange,提问作者Karan
相关产品推荐
相关产品推荐

