如何让Python默认以脚本所在目录为工作目录查找外部文件?
解决Python脚本默认以自身所在目录查找文件的问题
问题根源在于Python默认的当前工作目录是你启动脚本时的终端路径(或双击脚本时的系统默认路径),而非脚本文件本身所在的目录。要实现优先在脚本所在目录查找同目录文件,有两种简洁方案:
方案1:切换当前工作目录到脚本所在路径
通过代码将工作目录切换为脚本自身的目录,之后直接使用文件名即可访问同目录文件:
import os # 获取脚本的绝对目录路径 script_dir = os.path.dirname(os.path.abspath(__file__)) # 切换当前工作目录到脚本目录 os.chdir(script_dir) # 直接打开同目录的info.txt with open('info.txt', 'r') as f: content = f.read() # 后续文件处理逻辑
方案2:拼接文件的绝对路径(不切换工作目录)
如果不想改变当前工作目录,可直接拼接脚本目录与文件名,生成绝对路径访问文件:
import os # 获取脚本的绝对目录路径 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接得到info.txt的绝对路径 file_path = os.path.join(script_dir, 'info.txt') # 通过绝对路径打开文件 with open(file_path, 'r') as f: content = f.read() # 后续文件处理逻辑
注意事项
__file__变量仅在脚本文件中有效,交互式Python环境(如命令行shell)中不存在该变量。- 若需将脚本打包为可执行文件(如用PyInstaller),需注意部分打包工具会修改
__file__的指向,需参考对应工具的文档调整,但普通脚本移动目录的场景下,上述方案完全适用。
内容的提问来源于stack exchange,提问作者Johnny Canuck
相关产品推荐
相关产品推荐

