os.path.join()
功能:连接两个或更多的路径名组件
demo1 : 各组件名首字母不包含’/’
import os
path1 = 'aaa'
path2 = 'bbb'
path3 = 'ccc'
path10 = path1 + path2 + path3
path20 = os.path.join(path1,path2,path3)
print('path10 = ',path10)
print('path20 = ',path20)
path10 = aaabbbccc
path20 = aaa\bbb\ccc
demo2:有一个组件是绝对路径
import os
path1 = '/aaa'
path2 = 'bbb'
path3 = 'ccc'
path10 = path1 + path2 + path3
path20 = os.path.join(path1,path2,path3)
print('path10 = ',path10)
print('path20 = ',path20)
path10 = /aaabbbccc
path20 = /aaa\bbb\ccc
import os
path1 = '/aaa'
path2 = '/bbb'
path3 = 'ccc'
path10 = path1 + path2 + path3
path20 = os.path.join(path1,path2,path3)
print('path10 = ',path10)
print('path20 = ',path20)
path10 = /aaa/bbbccc
path20 = /bbb\ccc
path1 = '/aaa'
path2 = 'bbb'
path3 = '/ccc'
path10 = path1 + path2 + path3
path20 = os.path.join(path1,path2,path3)
print('path10 = ',path10)
print('path20 = ',path20)
path10 = /aaabbb/ccc
path20 = /ccc
demo3:有一个组建为‘ ./ ’
path1 = '/aaa'
path2 = './bbb'
path3 = 'ccc'
path10 = path1 + path2 + path3
path20 = os.path.join(path1,path2,path3)
print('path10 = ',path10)
print('path20 = ',path20)
path10 = /aaa./bbbccc
path20 = /aaa./bbb\ccc
path1 = 'aaa'
path2 = './bbb'
path3 = '/ccc'
path10 = path1 + path2 + path3
path20 = os.path.join(path1,path2,path3)
print('path10 = ',path10)
print('path20 = ',path20)
path10 = aaa./bbb/ccc
path20 = /ccc
demo4: 最后一个组件为空
path1 = 'aaa'
path2 = './bbb'
path3 = ' '
path10 = path1 + path2 + path3
path20 = os.path.join(path1,path2,path3)
print('path10 = ',path10)
print('path20 = ',path20)
path10 = aaa./bbb
path20 = aaa./bbb\
总结:
- 该方法会从最后一个字符串开始向前寻找,直到找到以’ / ’ 开头的字符串,并将他们拼接起来
- 如果各组件名首字母不包含’/’,则函数会自动加上
- 如果有一个组件是绝对路径,则在它之前的所有组件均会被舍弃
- 如果最后一个组件为空,则生成的路径以一个’\’分隔符结尾
- 如果遇到‘ ./ ’ ,会把’ ./ ‘前面的字符一起拼接起来。
- ’ / ’ 的优先级高于’ ./ ’ 。
参考博客:https://blog.youkuaiyun.com/qq_33468857/article/details/89027013
https://blog.youkuaiyun.com/weixin_40624269/article/details/82740282