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
相关产品推荐
相关产品推荐

