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

