python之os路徑被轉(zhuǎn)義的問題
python os路徑被轉(zhuǎn)義問題
以前常碰到字符串前面加r的情況,不加r有時(shí)候有問題有時(shí)候沒有,也就沒深究,這次就碰到一個(gè)問題搞了半天發(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表示輸出兩個(gè)空格
- \0 表示八進(jìn)制編碼的ASCII
- \0后面的兩位數(shù)就是8進(jìn)制數(shù)表示的ASCII值
- \0后面的8進(jìn)制數(shù)44表示為十進(jìn)制是4*8+4=36
- 在ASCII表中正好對應(yīng)$符號。
解決方案
1.字符串前面加r可以防止字符串被轉(zhuǎn)義,字符串前加r是告訴編譯器把后面的內(nèi)容當(dāng)成純字符串
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("\")把所有有 \ 的地方斷開,返回一個(gè)列表
path = r"K:\imageData\neg\4\001.bmp" path.split('\\')
['K:', 'imageData', 'neg', '4', '001.bmp']
rsplit("\",1)把最后出現(xiàn)"\"的地方斷開返回一個(gè)列表
path.rsplit('\\',1)
['K:\\imageData\\neg\\4', '001.bmp']
path.rsplit('\\',2)
['K:\\imageData\\neg', '4', '001.bmp']
rsplit()取負(fù)數(shù)時(shí)退化為split()方法
path.rsplit('\\',-1)
['K:', 'imageData', 'neg', '4', '001.bmp']
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python利用Selenium進(jìn)行網(wǎng)頁自動化與動態(tài)內(nèi)容抓取操作
Selenium是一個(gè)自動化測試工具,它允許開發(fā)者模擬用戶的瀏覽器行為,執(zhí)行各種交互操作,下面就跟隨小編一起了解下如何使用Python和Selenium進(jìn)行網(wǎng)頁自動化與動態(tài)內(nèi)容抓取吧2025-03-03python基礎(chǔ)知識之try...except...的詳細(xì)用法實(shí)例
在各種編程語言進(jìn)行工作和學(xué)習(xí)的過程中,都會有一些錯誤異常,下面這篇文章主要給大家介紹了關(guān)于python基礎(chǔ)知識之try...except...的詳細(xì)用法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08python腳本生成caffe train_list.txt的方法
下面小編就為大家分享一篇python腳本生成caffe train_list.txt的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04python實(shí)現(xiàn)定時(shí)壓縮指定文件夾發(fā)送郵件
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)定時(shí)壓縮指定文件夾發(fā)送郵件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04Pygame實(shí)戰(zhàn)練習(xí)之飛機(jī)大戰(zhàn)游戲
飛機(jī)大戰(zhàn)想必是很多人童年時(shí)期的經(jīng)典游戲,我們依舊能記得抱個(gè)老人機(jī)娛樂的場景,下面這篇文章主要給大家介紹了關(guān)于如何利用python寫一個(gè)簡單的飛機(jī)大戰(zhàn)小游戲的相關(guān)資料,需要的朋友可以參考下2021-09-09Python訪問PostgreSQL數(shù)據(jù)庫詳細(xì)操作
postgresql是常用的關(guān)系型數(shù)據(jù)庫,并且postgresql目前還保持著全部開源的狀態(tài),這篇文章主要給大家介紹了關(guān)于Python訪問PostgreSQL數(shù)據(jù)庫的相關(guān)資料,需要的朋友可以參考下2023-11-11