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

Python中如何用其他库定义跨平台兼容的相对路径?

解决跨平台相对路径问题的实用方案

你之前用os.getcwd()的问题在于:它返回的是程序运行时的当前工作目录,而非脚本文件本身所在的目录。如果用户从其他目录启动脚本,路径就会失效。以下是两种可靠的跨平台实现方式:

方案1:使用pathlib(Python3.4+ 推荐)

pathlib是Python标准库中面向对象的路径处理工具,天生适配所有操作系统的路径规则:

from pathlib import Path

# 获取当前脚本所在的目录
script_directory = Path(__file__).parent

# 拼接目标文件路径(示例:文件和脚本同目录)
KEYS_FILE_PATH = script_directory / "encryption_keys.txt"

# 如果文件在子目录中,比如"assets/keys/"下:
# KEYS_FILE_PATH = script_directory / "assets" / "keys" / "encryption_keys.txt"

# 如需字符串格式,直接转换即可
print(str(KEYS_FILE_PATH))

Path(__file__)会获取当前脚本的绝对路径,.parent提取其所在目录,/运算符自动适配Windows的\和类Unix系统的/。

方案2:使用os.path模块(兼容Python2/3)

如果需要兼容旧版本Python,用os.path的工具函数同样能实现跨平台:

import os

# 获取当前脚本所在的绝对目录
script_directory = os.path.dirname(os.path.abspath(__file__))

# 拼接目标文件路径
KEYS_FILE_PATH = os.path.join(script_directory, "encryption_keys.txt")

# 子目录示例:
# KEYS_FILE_PATH = os.path.join(script_directory, "assets", "keys", "encryption_keys.txt")

print(KEYS_FILE_PATH)

os.path.abspath(__file__)拿到脚本的绝对路径,os.path.dirname()提取目录,os.path.join()自动使用对应系统的路径分隔符拼接路径。

额外提示

如果你的密钥文件是和项目根目录关联的(比如项目根下的data文件夹),可以基于脚本目录向上追溯:

  • 用pathlib:project_root = script_directory.parent,再拼接project_root / "data" / "encryption_keys.txt"
  • 用os.path:project_root = os.path.dirname(script_directory),再拼接os.path.join(project_root, "data", "encryption_keys.txt")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:04:59