You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Python脚本所在目录动态设置为工作目录?

动态设置Python脚本的工作目录为自身所在路径

如果你需要让脚本自动切换到自身所在的目录,不管脚本被复制到哪里,都可以用Python内置的__file__属性结合os模块来实现,两种常用方案如下:

方案1:直接切换工作目录

这个方法会把当前工作目录改成脚本所在的文件夹,适合需要从脚本目录读取/写入文件的场景:

import os

# 获取脚本的绝对路径
script_full_path = os.path.abspath(__file__)
# 提取脚本所在的目录路径
script_directory = os.path.dirname(script_full_path)
# 切换工作目录到脚本所在目录
os.chdir(script_directory)

__file__属性会返回当前运行脚本的路径,不管你从哪个目录启动脚本,都能准确获取到脚本本身的位置,完全不需要硬编码路径。

方案2:将脚本目录加入模块搜索路径

如果你的需求只是导入同目录下的其他Python文件,其实不需要切换工作目录,直接把脚本目录添加到sys.path里即可,这样Python就能找到同目录的模块:

import os
import sys

script_directory = os.path.dirname(os.path.abspath(__file__))
# 避免重复添加路径
if script_directory not in sys.path:
    sys.path.append(script_directory)

# 现在可以直接导入同目录的模块了
import your_module_name

注意事项

  • __file__属性只在脚本文件运行时有效,在Python交互式环境中使用会报错,不过脚本运行场景下完全没问题。
  • 如果你用PyInstaller等工具把脚本打包成可执行文件,__file__的行为会略有不同,这时候可以用sys.executable来替代:
import os
import sys

if getattr(sys, 'frozen', False):
    # 打包后的可执行文件场景
    script_directory = os.path.dirname(sys.executable)
else:
    # 普通脚本场景
    script_directory = os.path.dirname(os.path.abspath(__file__))
os.chdir(script_directory)

内容的提问来源于stack exchange,提问作者Ben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 07:25:01