os.path.join()的用途是路径拼接,但是在网上查的资料说的不甚明了,我自己做了一些实验,如有错误,还请大神指正。

环境: Linux终端

测试语句

print(os.path.join('aaaa','bbbb','cccc-cleend'))

测试思路,在a ,b , c 前 分别加 ’ \ ’ 测试运行结果。

结果如下:

In [240]: print(os.path.join('/aaaa','bbbb','cccc-cleend'))
/aaaa/bbbb/cccc-cleend

In [241]: print(os.path.join('/aaaa','/bbbb','cccc-cleend'))
/bbbb/cccc-cleend

In [242]: print(os.path.join('/aaaa','/bbbb','/cccc-cleend'))
/cccc-cleend

In [243]: print(os.path.join('/aaaa','bbbb','/cccc-cleend'))
/cccc-cleend

In [244]: print(os.path.join('aaaa','bbbb','cccc-cleend'))
aaaa/bbbb/cccc-cleend

In [245]: print(os.path.join('aaaa','/bbbb','cccc-cleend'))
/bbbb/cccc-cleend

In [246]: print(os.path.join('aaaa','/bbbb','./cccc-cleend'))
/bbbb/./cccc-cleend

In [247]: print(os.path.join('/aaaa','./bbbb','/cccc-cleend'))
/cccc-cleend

In [248]: print(os.path.join('/aaaa','./bbbb','cccc-cleend'))
/aaaa/./bbbb/cccc-cleend

个人总结:
1.该方法会从最后一个字符串开始向前寻找,直到找到以’ / ’ 开头的字符串,并将他们拼接起来;
2.如果没有以‘ / ‘开头的字符串,就把所有的字符串拼接起来(最前方不会出现’/’);
3.如果遇到‘ ./ ’ ,会把’ ./ ‘前面的字符一起拼接起来。
4. ’ / ’ 的优先级高于’ ./ ’ 。

如有错误,还请不吝赐教。

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐