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

Python中如何跨文件夹引用其他目录下的文件并实现跨设备通用

Python跨子目录获取稳定相对路径方案

你之前使用的./Folder/archive2是基于运行脚本时的当前工作目录的相对路径,一旦运行位置变化、或者脚本不在同一级目录下就会失效。要实现跨设备、任意位置运行都生效的路径获取,核心思路是基于当前脚本自身的固定位置计算路径,只要整体目录结构不变就能通用。

你的目录结构整理后如下:

RandomDirectory/
├─ Folder1/
│  └─ Archive1.py(当前运行的脚本)
└─ Folder2/
   └─ Archive2.py(目标文件)

方案1:使用pathlib(Python3.4+ 推荐,语法简洁跨平台)

pathlib是Python内置的面向对象路径处理库,自动适配不同系统的路径分隔符:

from pathlib import Path

# 获取当前脚本Archive1.py所在的目录(即Folder1的绝对路径)
current_script_dir = Path(__file__).resolve().parent
# 向上退一层到共同父目录RandomDirectory,再进入Folder2定位Archive2.py
archive2_path = current_script_dir.parent / "Folder2" / "Archive2.py"

# 如需字符串格式的路径直接转换即可
print(str(archive2_path))

你也可以直接写相对路径拼接,效果完全一致:
archive2_path = current_script_dir / "../Folder2/Archive2.py"

方案2:使用os模块(兼容Python2及旧版本Python3)

如果需要兼容旧版本Python,可以用os模块的路径处理方法:

import os

# 获取当前脚本Archive1.py所在的目录(即Folder1的绝对路径)
current_script_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接得到Archive2的路径,os.path.join自动处理跨系统分隔符
archive2_path = os.path.join(current_script_dir, "..", "Folder2", "Archive2.py")

print(archive2_path)

两种方案的共同优势:

  • 完全不依赖设备的绝对路径,只要RandomDirectory的内部目录结构不变,放到任意计算机上都能正常运行
  • 自动适配Windows、macOS、Linux的路径格式,不需要手动处理/和\的差异
  • 不管你在哪个工作目录下运行Archive1.py,路径计算都不会出错,比硬编码的.//../相对路径稳定性更高

注意:不要直接写硬编码的../Folder2/Archive2.py直接使用,这种写法和你之前的./开头路径一样依赖运行时的工作目录,只有和__file__结合计算出来的路径才是稳定的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:45:01