使用os.path.join拼接路径不符合预期:盘符后缺失反斜杠
解决Windows盘符路径拼接缺失反斜杠的问题
当使用os.path.join拼接包含'c:'的路径列表时,出现盘符后缺少反斜杠的问题,本质是Windows路径规则导致的:'c:'代表C盘的当前工作目录(相对路径),而非C盘根目录;只有'c:\\'才是C盘根目录的绝对路径标识。
以下是几种可行的解决方法:
修改原始列表的盘符格式
把列表中的'c:'改为'c:\\'或'c:/',直接用os.path.join拼接即可:import os a_list = ['c:\\', 'project_files', 'ProjA', 'B_Files'] my_path = os.path.join(*a_list) # 输出结果:'c:\\project_files\\ProjA\\B_Files'动态处理盘符元素
如果无法修改原始列表,可先检查并补全盘符后的反斜杠,再进行拼接:import os a_list = ['c:', 'project_files', 'ProjA', 'B_Files'] if a_list[0].endswith(':'): a_list[0] += '\\' my_path = os.path.join(*a_list)使用pathlib模块(推荐)
Python 3.4+引入的pathlib对Windows路径的处理更符合直觉,可先构造根路径再拼接后续部分:from pathlib import Path a_list = ['c:', 'project_files', 'ProjA', 'B_Files'] root_path = Path(a_list[0] + '\\') my_path = root_path.joinpath(*a_list[1:]) # 转为字符串:str(my_path) → 'c:\\project_files\\ProjA\\B_Files'
内容的提问来源于stack exchange,提问作者ATP
相关产品推荐
相关产品推荐

