重装Windows后Python无法打开同目录下的文本文件,是什么原因该如何解决?
问题原因
- 核心原因是当前工作目录(Current Working Directory, CWD)和脚本所在目录不匹配,该问题与Python环境变量配置无关,无需排查环境变量设置。
- Python内置的
open()函数传入相对路径时,会基于当前运行脚本时的工作目录查找文件,而非脚本本身的存储目录。重装系统后你的终端/IDE的Python运行配置被重置,导致运行脚本时的工作目录不是C:\untitled,所以找不到同目录下的txt文件。 - 可通过以下代码验证该问题:
import os print("当前工作目录:", os.getcwd()) print("脚本所在目录:", os.path.dirname(os.path.abspath(__file__)))
运行后若两个输出结果不一致,即可确认问题根源。
解决方法
无需修改旧脚本的配置方案
- IDE运行场景:
- PyCharm:点击右上角运行配置旁的下拉箭头→「编辑配置」→找到对应脚本的运行配置,将「工作目录」参数修改为
C:\untitled;如需全局生效,可修改Python运行模板的默认工作目录配置。 - VS Code:打开设置界面,搜索
python.terminal.executeInFileDir,勾选该选项,后续运行Python脚本时会自动切换到脚本所在目录作为工作目录。
- PyCharm:点击右上角运行配置旁的下拉箭头→「编辑配置」→找到对应脚本的运行配置,将「工作目录」参数修改为
- 终端运行场景:运行脚本前先切换到脚本所在目录,再执行运行命令。示例:
先执行cd C:\untitled,再执行python helloworld.py,不要在其他目录下通过绝对路径指定脚本运行。
一劳永逸的代码兼容方案
后续新写代码建议使用该逻辑,避免更换运行环境后重复出现同类问题:
将文件路径拼接为基于脚本目录的绝对路径,示例代码如下:
import os # 获取当前脚本所在的绝对目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接目标文件的完整路径 file_path = os.path.join(script_dir, 'mytext.txt') f = open(file_path)
该写法不受运行时工作目录影响,无论在任何目录下启动脚本都可以正常找到同目录下的文件。
内容的提问来源于stack exchange,提问作者Riggun
相关产品推荐
相关产品推荐

