一、os.path.join()函数的基本规则

第一步:首先看各个path参数中有无以【盘符:】或【\】开头的字符串(\前面除了【盘符:】不能有其他),如果没有,就会把所有参数保留,参数之间有\分隔。

第二步:如果有以【盘符:】开头的字符串,(假如有多个),从最后一个开始保留。

第三步:如果有以【\】开头的字符串,(假如有多个),从最后一个开始保留。

                                                               拔高                                                                      

  • 【盘符:】的优先级在【\】之前,因此如果存在【盘符:】,则之前的带有【\】开头的字符串会被抛弃。
  • 如果最后的以【盘符:】开头的字符串后面带有【\path1】,并且后面还有【\】开头的字符串(比如【\path2】),那么\path1以及后续直到\path2之前的字符串都会被抛弃。

二、代码实现

只需要第一步判断,就可以出最终结果的代码示例如下:

print(os.path.join("BaiduNetdiskDownload","test1","test2")) 

# BaiduNetdiskDownload\test1\test2

下面是有多个以【盘符:】开头的字符串代码示例:

print(os.path.join(r"D:\BaiduNetdiskDownload", r"C:", "test1", r"D:", "test2"))  

# D:test2

下面是有多个以【\】开头的字符串代码示例:

print(os.path.join(r"\BaiduNetdiskDownload", r"\test1", "test2")) 

# D:\test1\test2

下面是以【盘符:\path1】开头的字符串中的path1部分被后续的\path2部分替代的示例:

print(os.path.join(r"D:\BaiduNetdiskDownload", r"\test1"))

# D:\test1

下面是有多个以【盘符:】和多个【\】开头字符串代码示例:

print(os.path.join(r"D:\BaiduNetdiskDownload", "C:", r"\test1", "test1.1", r"\test2", "test3")) 

# C:\test2\test3

三、补充知识

举一个路径例子:【D:\ChromeCoreDownloads】,其中【\】代表路径分隔符。

而如果路径中包含双点号,例如【D:\ChromeCoreDownloads\test1\..\test2】,那么这个【..】就是对上一级目录的引用,也就是说【D:\ChromeCoreDownloads\test1\..\test2】的标准化路径(真实路径,也称绝对路径abspath)就是【D:\ChromeCoreDownloads\test2】。

print(os.path.realpath(r'D:\ChromeCoreDownloads\test1\..\test2'))
print(os.path.abspath(r'D:\ChromeCoreDownloads\test1\..\test2'))
print(os.path.normpath(r'D:\ChromeCoreDownloads\test1\..\test2'))
# 上面3行的输出结果都是D:\ChromeCoreDownloads\test2

四、参考来源

os.path --- 常用路径操作 — Python 3.10.2 文档

python路径拼接os.path.join()函数完全教程_开贰锤-CSDN博客_python路径拼接

Python os.path.join()用法及代碼示例 - 純淨天空

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐