python中的路徑拼接問(wèn)題
python路徑拼接
使用:
- os.path.join()函數(shù):連接兩個(gè)或更多的路徑名組件
- 如果有一個(gè)組件是一個(gè)絕對(duì)路徑,則在它之前的所有組件均會(huì)被舍棄
- 如果最后一個(gè)組件為空,則生成的路徑以一個(gè) \ 分隔符結(jié)尾
def test2(): ? ? s1, s2, s3 = 'home', 'courses', 'test' ? ? res = os.path.join(s1, s2, s3) ? ? print(res) ?# home\courses\test ? ? s2 = '/courses' ? ? res = os.path.join(s1, s2, s3) ? ? print(res) ?# /courses\test ? ? s1, s2, s3 = '\home', 'courses', 'test' ? ? res = os.path.join(s1, s2, s3) ? ? print(res) ?# \home\courses\test ? ? s1, s2, s3 = '\home', 'courses', '' ? ? res = os.path.join(s1, s2, s3) ? ? print(res) ?#\home\courses\
home\courses\test
/courses\test
\home\courses\test
\home\courses\
python os.path.join路徑拼接錯(cuò)誤
ss = 'E:\\Cloud\\20200813105812L\\res\\1\\425' a = '\\8_live_1962854245_export_files\\media' c = os.path.join(ss,a) print(c)
得到的是如下結(jié)果:

os.path.join()函數(shù)
連接兩個(gè)或更多的路徑名組件:
參數(shù)可能存在多個(gè)
從右邊開(kāi)始數(shù),遇到第一個(gè)以”/”開(kāi)頭的參數(shù),開(kāi)始拼接,這個(gè)參數(shù)左邊的全部丟棄
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'))
結(jié)果:
0: \aaaa\bbbb\ccccc.txt
0: \bbbb\ccccc.txt
0: \ccccc.txt
0: \ccccc.txt
0: \ccccc.txt
0: /ccccc.txt
從右邊開(kāi)始數(shù),遇到第一個(gè)以”/”開(kāi)頭的參數(shù),開(kāi)始拼接,這個(gè)參數(shù)左邊的全部丟棄
print("1:",os.path.join('aaaa','xxxxxx','./bbb','ccccc.txt'))
print("1:",os.path.join('./aaaa','xxxxxx','./bbb','./ccccc.txt'))
結(jié)果:
1: aaaa\xxxxxx\./bbb\ccccc.txt
1: ./aaaa\xxxxxx\./bbb\./ccccc.txt
帶盤(pán)符,/,\各種復(fù)雜情況(正式使用前先測(cè)試,也可以去看看源碼具體是怎么解析的)
# 后面的斜杠反斜杠
print("1:",os.path.join('c:','bbb'))
print("1:",os.path.join('c:','bbb/\\','ccccc.txt'))
# 未加盤(pán)符
print("2:",os.path.join('c','/bbb','ccccc.txt')) # 會(huì)以/bbb開(kāi)頭
print("2:",os.path.join('c:','/bbb','ccccc.txt')) # 雖然有反斜桿 但是依舊以C:開(kāi)頭
print("2:",os.path.join('c:/','/bbb','ccccc.txt')) # 多個(gè)/只會(huì)有一個(gè)
# 盤(pán)符后面未加斜杠
print("3:",os.path.join('c:','bbb','ccccc.txt'))
print("3:",os.path.join('c:/','bbb','ccccc.txt'))
結(jié)果:
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
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python Web開(kāi)發(fā)你要理解的WSGI & uwsgi詳解
這篇文章主要給大家介紹了關(guān)于python Web開(kāi)發(fā)你一定要理解的WSGI & uwsgi的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08
解決python執(zhí)行不輸出系統(tǒng)命令彈框的問(wèn)題
今天小編就為大家分享一篇解決python執(zhí)行不輸出系統(tǒng)命令彈框的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
Django 添加靜態(tài)文件的兩種實(shí)現(xiàn)方法(必看篇)
下面小編就為大家?guī)?lái)一篇Django 添加靜態(tài)文件的兩種實(shí)現(xiàn)方法(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07
Python+Dlib+Opencv實(shí)現(xiàn)人臉采集并表情判別功能的代碼
這篇文章主要介紹了Python+Dlib+Opencv實(shí)現(xiàn)人臉采集并表情判別,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
Python腳本實(shí)現(xiàn)下載合并SAE日志
這篇文章主要介紹了Python腳本實(shí)現(xiàn)下載合并SAE日志,本文講解了代碼編寫(xiě)過(guò)程,然后給出了完整代碼,需要的朋友可以參考下2015-02-02

