Python try-except处理目录打开错误的问题求助
修正Python文件/目录打开的错误处理函数
原代码的核心问题在于异常处理逻辑完全错误:except块里重复执行会触发错误的open操作,且错误判断方式完全不符合Python异常处理规则,同时存在硬编码错误路径、参数名冲突等问题。以下是修正后的代码:
def open_path(path): # 避免使用Python内置名`dir`作为参数 try: # 默认以只读模式打开,若目标是目录会触发IsADirectoryError return open(path) except FileNotFoundError: return f"[Errno 2] No such file or directory: '{path}'" except PermissionError: return f"[Errno 13] Permission denied: '{path}'" except IsADirectoryError: return f"[Errno 21] Is a directory: '{path}'" except Exception as e: # 兜底处理其他未预料到的错误 return str(e) # 修正测试用例的错误参数:原第二个测试的字符串格式错误,直接传入路径即可 print(open_path("doc.docx")) print(open_path("/etc/passwd")) print(open_path('/home'))
关键修正点:
- 参数名从
dir改为path,避免覆盖Python内置的dir()函数 - 移除except块中重复的
open调用,直接捕获对应异常类型 - 用实际传入的路径替换硬编码内容,返回格式化的错误信息
- 添加通用异常捕获,处理未预见的错误场景
- 修正测试用例的错误参数:原
"'/etc/passwd', 'w'"是错误的字符串格式,无需额外引号和模式字符串
内容的提问来源于stack exchange,提问作者Wahid Ahmad Rustaqi
相关产品推荐
相关产品推荐

