python之os路徑被轉(zhuǎn)義的問題
python os路徑被轉(zhuǎn)義問題
以前常碰到字符串前面加r的情況,不加r有時候有問題有時候沒有,也就沒深究,這次就碰到一個問題搞了半天發(fā)現(xiàn)就是這里路徑被轉(zhuǎn)義了。
在python中反斜杠 \ 的功能是轉(zhuǎn)義,例如:\n表示換行,\t 表示水平制表符,也就是tab鍵。
在windows中 反斜杠 \ 也用來表示路徑分隔符。
例:
path = "K:\imageData\neg\4\044.bmp" print(path)
K:\imageData eg$.bmp
這里\n表示換行,所以輸出到K:\imageData就換行了,
- \4表示輸出兩個空格
- \0 表示八進制編碼的ASCII
- \0后面的兩位數(shù)就是8進制數(shù)表示的ASCII值
- \0后面的8進制數(shù)44表示為十進制是4*8+4=36
- 在ASCII表中正好對應$符號。

解決方案
1.字符串前面加r可以防止字符串被轉(zhuǎn)義,字符串前加r是告訴編譯器把后面的內(nèi)容當成純字符串
path = r"K:\imageData\neg\4\001.bmp" print(path)
K:\imageData\neg\4\001.bmp
2.采用正斜杠不會被轉(zhuǎn)義 “/”
path = "K:/imageData/neg/4/001.bmp" print(path)
K:/imageData/neg/4/001.bmp
3.采用雙反斜線 “\\”
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.bmppath2: K:\\imageData\\neg\\4\\001.bmppath3: 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)把最后出現(xiàn)"\"的地方斷開返回一個列表
path.rsplit('\\',1)['K:\\imageData\\neg\\4', '001.bmp']
path.rsplit('\\',2)['K:\\imageData\\neg', '4', '001.bmp']
rsplit()取負數(shù)時退化為split()方法
path.rsplit('\\',-1)['K:', 'imageData', 'neg', '4', '001.bmp']
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
numpy.random.choice()函數(shù)詳解
處理數(shù)據(jù)時我們經(jīng)常需要從數(shù)組中隨機抽取元素,這時候我們可以考慮使用np.random.choice()函數(shù),這篇文章主要介紹了numpy.random.choice()函數(shù),需要的朋友可以參考下2023-05-05
python爬蟲簡單的添加代理進行訪問的實現(xiàn)代碼
本文通過實例代碼給大家介紹了python爬蟲簡單的添加代理進行訪問,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-04-04

