答案是通过路径类型检查和异常处理可避免NotADirectoryError。在调用os.listdir()等目录操作前,应使用os.path.isdir()或pathlib.Path.is_dir()判断路径是否为目录,并结合exists()确认路径存在,同时用try-except捕获NotADirectoryError、FileNotFoundError等异常,确保程序健壮性。

在使用Python处理文件和目录时,经常会遇到 NotADirectoryError 错误,提示“不是目录”。这个错误通常发生在你试图将一个**非目录路径**(比如普通文件)当作目录来操作,例如调用 os.listdir() 或 os.chdir() 时。下面介绍常见场景、错误原因以及如何正确处理。
当你尝试对一个本应是目录的路径执行目录相关操作,但该路径实际上是一个文件或其他非目录对象时,Python会抛出 NotADirectoryError。典型错误信息如下:
NotADirectoryError: [Errno 20] Not a directory: 'path/to/somefile.txt'以下几种操作容易触发此错误:
.iterdir() 在文件上示例代码:
立即学习“Python免费学习笔记(深入)”;
import os
os.listdir('config.log') # 如果 config.log 是文件,报错 NotADirectoryError关键是**在操作前验证路径类型**。可以使用 os.path.isdir() 或 pathlib.Path.is_dir() 来判断是否为目录。
推荐做法:
import os
<p>path = 'data'</p><p>if os.path.isdir(path):
for item in os.listdir(path):
print(item)
else:
print(f"'{path}' 不是一个目录,可能是文件或不存在。")
使用 pathlib 的方式:
from pathlib import Path
<p>p = Path('data')</p><p>if p.is_dir():
for child in p.iterdir():
print(child)
elif p.exists():
print(f"'{p}' 是一个文件,无法遍历。")
else:
print(f"'{p}' 不存在。")
import os
<p>try:
items = os.listdir('unknown_path')
for item in items:
print(item)
except NotADirectoryError:
print("指定路径不是一个目录。")
except FileNotFoundError:
print("路径不存在。")
except PermissionError:
print("没有访问权限。")
这样即使出错也能友好提示,程序不会直接崩溃。
基本上就这些。只要在操作目录前做好路径类型判断,就能有效避免 NotADirectoryError。不复杂但容易忽略。
以上就是Python路径不是目录错误NotADirectoryError处理教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号