Python中os.path.join拼接路径时忽略'My Drive'的问题咨询
解决os.path.join忽略中间路径的问题
问题根源很明确:os.path.join 遇到以路径分隔符(Windows下是\)开头的参数时,会直接舍弃前面所有已拼接的路径,只保留这个带开头分隔符的部分。你通过os.path.splitdrive(ii)[1]得到的dir0是\Monthly\iOT\2021,开头的\触发了这个逻辑,导致'My Drive'被忽略。
下面给两种可行的解决办法:
方法一:移除路径开头的分隔符
直接用lstrip去掉dir0开头的路径分隔符(用os.sep适配不同系统),再执行拼接:
import os ii = r'Z:\Monthly\iOT\2021' dir0 = os.path.splitdrive(ii)[1].lstrip(os.sep) # 移除开头的路径分隔符 dir1 = os.path.join(r'G:', r'My Drive', dir0) print(dir1) # 输出:G:\My Drive\Monthly\iOT\2021
方法二:使用pathlib(推荐)
Python3.4+引入的pathlib模块处理路径更直观,能避免这类拼接陷阱:
from pathlib import Path ii = r'Z:\Monthly\iOT\2021' source_path = Path(ii) # 构造目标路径:G:\My Drive 加上源路径去掉盘符后的部分 target_path = Path(r'G:\My Drive') / source_path.relative_to(source_path.drive) print(str(target_path)) # 输出:G:\My Drive\Monthly\iOT\2021
内容的提问来源于stack exchange,提问作者Zanam
相关产品推荐
相关产品推荐

