美文网首页linux
python 路径被转义问题

python 路径被转义问题

作者: 1037号森林里一段干木头 | 来源:发表于2021-06-25 19:34 被阅读0次

    python os 路径被转义的问题,以前常碰到字符串前面加r的情况,不加r有时候有问题有时候没有,也就没深究,这次就碰到一个问题搞了半天发现就是这里路径被转义了。
    文件路径中的单双正反斜杠/ \ // \的意义

    在python中反斜杠 \ 的功能是转义,例如:\n表示换行,\t 表示水平制表符,也就是tab键。在windows中 反斜杠 \ 也用来表示路径分隔符。
    例:

    path = "K:\imageData\neg\4\044.bmp"
    print(path)
    
    K:\imageData
    eg�$.bmp
    

    这里\n表示换行,所以输出到K:\imageData就换行了,\4表示输出两个空格,\0 表示八进制编码的ASCII,\0后面的两位数就是8进制数表示的ASCII值,\0后面的8进制数44表示为十进制是4*8+4=36,在ASCII表中正好对应$符号。


    image.png

    解决方案

    1. 字符串前面加r可以防止字符串被转义,字符串前加r是告诉编译器把后面的内容当成纯字符串
    path = r"K:\imageData\neg\4\001.bmp"
    print(path)
    
    K:\imageData\neg\4\001.bmp
    
    1. 采用正斜杠不会被转义 “/”
    path = "K:/imageData/neg/4/001.bmp"
    print(path)
    
    K:/imageData/neg/4/001.bmp
    
    1. 采用双反斜线 "\\"
    path = "K:\\imageData\\neg\\4\\001.bmp"
    print(path)
    
    K:\imageData\neg\4\001.bmp
    

    如果是在os.path.join()中生成的路径,没法显示的用手改,可以配合split() 和 str.join()方法解决

    import os
    folder = r"K:\imageData\neg\4"
    name = "001.bmp"
    path = os.path.join(folder,name)
    print("path:",path)
    
    path2 = "\\\\".join(path.split("\\")) 
    print("path2:",path2)
    
    path3 = "/".join(path.split("\\")) 
    print("path3:",path3)
    
    path: K:\imageData\neg\4\001.bmp
    path2: K:\\imageData\\neg\\4\\001.bmp
    path3: K:/imageData/neg/4/001.bmp
    

    split and rsplit的用法

    split("\")把所有有 \ 的地方断开,返回一个列表

    path = r"K:\imageData\neg\4\001.bmp"
    path.split('\\')
    
    ['K:', 'imageData', 'neg', '4', '001.bmp']
    

    rsplit("\",1)把最后出现"\"的地方断开返回一个列表

    path.rsplit('\\',1)
    
    ['K:\\imageData\\neg\\4', '001.bmp']
    
    path.rsplit('\\',2)
    
    ['K:\\imageData\\neg', '4', '001.bmp']
    

    rsplit()取负数时退化为split()方法

    path.rsplit('\\',-1)
    
    ['K:', 'imageData', 'neg', '4', '001.bmp']
    
    
    

    相关文章

      网友评论

        本文标题:python 路径被转义问题

        本文链接:https://www.haomeiwen.com/subject/xckfrltx.html