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

如何从其他目录执行Python文件?实现跨目录调用且不修改目标脚本

解决方案

当然可以搞定!问题的核心其实是工作目录的差异:

  • 手动运行dir/other.py时,你的终端工作目录就是dir/,所以open('data.txt')能直接找到同目录下的文件;
  • 但从根目录的main.py启动它时,默认工作目录是根目录,other.py会去根目录找data.txt,自然找不到。

我们完全不需要修改other.py,只需要在启动它的时候,给子进程指定正确的工作目录就行。

具体实现(main.py代码)

用Python自带的subprocess模块来启动other.py,关键是设置cwd参数切换工作目录:

import subprocess
import sys

# 指向dir目录的路径,用相对路径就够了,或者用绝对路径更稳妥
target_dir = "./dir"
# 启动other.py,强制子进程在dir目录下运行
subprocess.run([sys.executable, "other.py"], cwd=target_dir)

为什么这招管用?

  • 从main.py启动时,cwd=target_dir会让子进程的工作目录切换到dir/,这时候other.py里的data.txt相对路径就刚好指向正确的文件;
  • 手动运行dir/other.py时,你本来就在dir/目录下操作,完全不受影响,依然能正常读取文件。

更稳妥的写法(避免相对路径坑)

如果担心main.py被从其他目录启动导致路径出错,可以用pathlib获取绝对路径:

import subprocess
import sys
from pathlib import Path

# 获取main.py所在目录的绝对路径,再拼接dir目录
target_dir = Path(__file__).parent / "dir"
subprocess.run([sys.executable, "other.py"], cwd=target_dir)

这样不管你从哪个目录运行main.py,都能精准找到dir目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:33:36