记录一次Python os.path.join路径拼接错误


ss = 'E:\\Cloud\\20200813105812L\\res\\1\\425'
a = '\\8_live_1962854245_export_files\\media'

c = os.path.join(ss,a)
print(c)

得到的是如下结果:
在这里插入图片描述

os.path.join()函数:连接两个或更多的路径名组件:

  1. 参数可能存在多个

  2. 从右边开始数,遇到第一个以”/”开头的参数,开始拼接,这个参数左边的全部丢弃

    print("0:",os.path.join('\\aaaa','bbbb','ccccc.txt'))
    print("0:",os.path.join('aaaa','\\bbbb','ccccc.txt'))
    print("0:",os.path.join('aaaa','bbbb','\\ccccc.txt'))
    print("0:",os.path.join('aaaa','\\bbbb','\\ccccc.txt'))
    print("0:",os.path.join('aaaa','/bbbb','\\ccccc.txt'))
    print("0:",os.path.join('aaaa','/bbbb','/ccccc.txt'))
    
    结果:
    0: \aaaa\bbbb\ccccc.txt
    0: \bbbb\ccccc.txt
    0: \ccccc.txt
    0: \ccccc.txt	
    0: \ccccc.txt
    0: /ccccc.txt
    
    
  3. 从右边开始数,遇到第一个以”/”开头的参数,开始拼接,这个参数左边的全部丢弃

    print("1:",os.path.join('aaaa','xxxxxx','./bbb','ccccc.txt'))
    print("1:",os.path.join('./aaaa','xxxxxx','./bbb','./ccccc.txt'))
    
    结果:
    1: aaaa\xxxxxx\./bbb\ccccc.txt
    1: ./aaaa\xxxxxx\./bbb\./ccccc.txt
    
  4. 带盘符,/,\各种复杂情况(正式使用前先测试,也可以去看看源码具体是怎么解析的)

    # 后面的斜杠反斜杠
    print("1:",os.path.join('c:','bbb'))
    print("1:",os.path.join('c:','bbb/\\','ccccc.txt'))
    
    # 未加盘符
    print("2:",os.path.join('c','/bbb','ccccc.txt')) # 会以/bbb开头
    print("2:",os.path.join('c:','/bbb','ccccc.txt')) # 虽然有反斜杆 但是依旧以C:开头
    print("2:",os.path.join('c:/','/bbb','ccccc.txt')) # 多个/只会有一个
    
    # 盘符后面未加斜杠
    print("3:",os.path.join('c:','bbb','ccccc.txt'))
    print("3:",os.path.join('c:/','bbb','ccccc.txt'))
    
    结果:
    1: c:bbb
    1: c:bbb/\ccccc.txt
    2: /bbb\ccccc.txt
    2: c:/bbb\ccccc.txt
    2: c:/bbb\ccccc.txt
    3: c:bbb\ccccc.txt
    3: c:/bbb\ccccc.txt
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值