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

os.path.join仅取首参盘符问题及跨平台路径生成求助

问题原因

你遇到的问题是因为os.path.splitdrive(src)[1]返回的路径片段\byn\scripts\script.js以路径分隔符开头,属于绝对路径前缀。而os.path.join的规则是:如果拼接的参数是绝对路径,会直接忽略前面的路径参数,只保留这个绝对路径片段,所以最终结果丢失了C:\TEST\scripts部分。

解决方法

方案1:使用pathlib(推荐,跨平台友好)

pathlib是Python3.4+内置的面向对象路径处理库,自动适配不同操作系统的路径分隔符,代码更简洁:

import pathlib

dst = pathlib.Path(r"C:\TEST\scripts")    
src = pathlib.Path(r"D:\byn\scripts\script.js")
# 获取盘符后的相对路径(自动去除开头的路径分隔符)
src_relative = src.relative_to(src.anchor)
final_path = dst / src_relative
print(final_path)

输出结果:

C:\TEST\scripts\byn\scripts\script.js

方案2:使用os模块兼容处理

如果坚持使用os模块,需要手动去除路径片段开头的分隔符,避免被识别为绝对路径:

import os

dst = r"C:\TEST\scripts"    
src = r"D:\byn\scripts\script.js"
_, src_after_drive = os.path.splitdrive(src)
# 去掉开头的路径分隔符,转为相对路径片段
src_relative = src_after_drive.lstrip(os.sep)
final_path = os.path.join(dst, src_relative)
print(final_path)

输出结果:

C:\TEST\scripts\byn\scripts\script.js

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 04:15:20