Windows下Python无法识别存在路径,os.listdir抛FileNotFoundError
Windows下Python访问带空格和点前缀目录报错的原因与解决办法
可能的原因
- Windows对以
.开头的目录有特殊处理:这类目录默认隐藏,即便资源管理器能看到,部分底层文件API可能因系统设置或权限问题无法正常识别。 - 路径里的空格加点点前缀的组合,触发了底层解析的兼容问题:虽然用了原始字符串规避转义,但旧版Python的
os模块对这种特殊路径的兼容性不如新库。 - 目录被锁定或权限不足:如果有其他进程(比如同步工具、编辑器)正在占用这个目录,或者当前用户没读取权限,也会触发FileNotFoundError。
解决办法
1. 取消目录的隐藏属性
先通过命令行去掉隐藏标记,再运行代码:
attrib -h "F:\temp\.clone - sb"
2. 换用pathlib库处理路径
Python 3.4+自带的pathlib对Windows路径支持更友好,能避免很多解析问题:
from pathlib import Path target_dir = Path(r'F:\temp\.clone - sb') # 遍历目录内容 for item in target_dir.iterdir(): print(item.name)
3. 检查目录占用与权限
- 打开任务管理器,看看有没有进程(比如Git、OneDrive)在占用这个目录,结束后重试。
- 右键目录→属性→安全,确认当前用户有读取和列出目录内容的权限。
4. 用Windows短路径访问
Windows的8.3短路径能规避特殊字符问题,先通过命令行获取短路径:
dir /x F:\temp
找到.clone - sb对应的短路径(类似CLONE~1),然后在Python里用这个路径:
import os short_path = r'F:\temp\CLONE~1' print(os.listdir(short_path))
内容的提问来源于stack exchange,提问作者arielma
相关产品推荐
相关产品推荐

