Python中使用open函数遇FileNotFoundError:文件存在却无法找到
问题分析:FileNotFoundError但文件实际存在的原因
你的代码:
try: with open("main.py") as file: print("File Opened") age = int(input("Enter your age- ")) xfactor = age/10 except (ValueError, ZeroDivisionError): print("Invalid Age")
运行时报错:
Traceback (most recent call last): File "c:\Users\aksha\Desktop\python\main.py", line 2, in <module> with open("main.py") as file: FileNotFoundError: [Errno 2] No such file or directory: 'main.py'
核心原因
你用相对路径"main.py"打开文件时,Python会在当前工作目录(启动脚本时所在的文件夹)查找文件,而不是脚本本身所在的文件夹。哪怕脚本文件确实存在,但如果运行时的工作目录和脚本所在目录不一致,Python就找不到这个文件。
比如你的脚本存在c:\Users\aksha\Desktop\python\main.py,但你可能是在C:\Users\aksha目录下运行的脚本,或者IDE默认的工作目录不是脚本所在的文件夹,导致路径匹配失败。
解决办法
用绝对路径打开文件:直接写文件的完整路径,注意加
r避免转义字符问题:with open(r"c:\Users\aksha\Desktop\python\main.py") as file:切换工作目录后运行:在命令行先进入脚本所在文件夹,再执行脚本:
cd c:\Users\aksha\Desktop\python python main.py设置IDE的工作目录:如果用VS Code、PyCharm等工具,把项目工作目录设为脚本所在文件夹。比如VS Code可以在
.vscode/settings.json中添加:{ "python.terminal.executeInFileDir": true }这样运行时会自动切换到文件所在目录。
额外建议
你的try-except块没有捕获FileNotFoundError,所以这个错误会直接抛出。可以把这个异常加到捕获列表里,统一处理:
except (ValueError, ZeroDivisionError, FileNotFoundError): print("Invalid age or file not found")
内容的提问来源于stack exchange,提问作者Akshaltz
相关产品推荐
相关产品推荐

